【问题标题】:What rules apply to MIME boundary?哪些规则适用于 MIME 边界?
【发布时间】:2011-06-07 01:51:12
【问题描述】:

当您编写 MIME 时,您可以使用特定的边界分隔不同的消息块。由于某种原因,我未能找到任何解释此边界的文档,但这是我从示例中收集的内容:

  1. 边界可以是任何字母和数字字符串,即。 e. “d29a0c638b540b23e9a29a3a9aebc900aeeb6a82”。

  2. 边界的生成没有规则,你可以md5sum你心爱的人的名字,这样你就得到了你的边界。

  3. 如果您通过 HTTP 发送 MIME,则必须添加一个标头“Content-Type”来指定您这样做,并且您的边界,标头的内容可能如下所示:

    多部分/表单数据;边界=d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

  4. 在您的消息正文中,边界应以“--”开头,例如:

    --d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

但是遵循这些规则(和this 有用的答案)我未能生成服务器可以接受的 POST 查询。我错过了什么吗?我是不是搞错了什么?

【问题讨论】:

    标签: http mime mime-types


    【解决方案1】:

    syntax of a boundary 是:

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

    body of a multipart entity 具有语法(仅重要部分):

     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)。因此,具有三个主体部分的多部分主体(以boundary 作为边界)可以如下所示:

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

    【讨论】:

    • 请解释一下transport-padding
    • 关闭边界后是否需要CRLF?
    • @johnlowvale [CRLF epilogue] 所以我猜根据bnf grammar 以CRLF 结尾是可选的。请参阅变体部分。
    • 边界可以使用emoji吗?
    • @MaraisRossouw:只有“字母数字 US-ASCII 字符”。表情符号不能在这个范围内表示(好吧,你可以先base64字符串,但为什么?)
    猜你喜欢
    • 2011-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 2014-06-19
    • 1970-01-01
    • 2016-09-13
    相关资源
    最近更新 更多