web-dev-qa-db-ja.com

MIME境界にはどのような規則が適用されますか?

MIMEを作成するときは、メッセージのさまざまなチャンクを特定の境界で分離します。何らかの理由でこの境界を説明するドキュメントを見つけることができませんでしたが、ここに例から収集したものがあります。

  1. 境界には、文字と数字の任意の文字列を使用できます。 e。 「d29a0c638b540b23e9a29a3a9aebc900aeeb6a82」。

  2. 境界を生成するための規則はありません。愛する人の名前をmd5sumするだけで、境界線を取得できます。

  3. HTTP経由でMIMEを送信する場合は、ヘッダー「Content-Type」を追加する必要があります。ヘッダーの内容は、次のようになります。

    multipart/form-data; border = d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

  4. メッセージの本文では、次のように境界の前に「-」を付ける必要があります。

    --d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

しかし、これらのルール(および this 役立つ回答)に従って、POSTサーバーが受け入れるクエリを生成できませんでした。何か不足していますか?何か問題がありましたか?

37
Septagram

境界の構文 は次のとおりです。

 boundary := 0*69<bchars> bcharsnospace
 bchars := bcharsnospace / " "
 bcharsnospace := DIGIT / ALPHA / "'" / "(" / ")" /
                  "+" / "_" / "," / "-" / "." /
                  "/" / ":" / "=" / "?"

そして マルチパートエンティティの本体 には構文があります(重要な部分のみ):

 multipart-body := [preamble CRLF]
                   dash-boundary transport-padding CRLF
                   body-part *encapsulation
                   close-delimiter transport-padding
                   [CRLF epilogue]
 dash-boundary := "--" boundary
 encapsulation := delimiter transport-padding
                  CRLF body-part
 delimiter := CRLF dash-boundary
 close-delimiter := delimiter "--"

先行する--はメッセージで使用されるすべての境界に必須であり、後続の--は終了境界に必須です(close-delimiter)。したがって、boundaryboundaryである3つのボディパートを持つマルチパートボディは、次のようになります。

--boundary
1. body-part
--boundary
2. body-part
--boundary
3. body-part
--boundary--
61
Gumbo