2011-01-11 4 views
35

Когда вы пишете MIME, вы разделяете различные фрагменты своего сообщения с определенной границей. Я не смог по какой-то причине, чтобы найти какую-либо документацию, объясняющую эту границу, но вот что я понял из примеров:Какие правила применяются к границе MIME?

  1. Граница может быть любая строка из букв и цифр, я. е. "D29a0c638b540b23e9a29a3a9aebc900aeeb6a82".

  2. Нет правил для создания границы, вы можете просто md5sum назвать имя своей любимой, и вот вам, у вас есть граница.

  3. Если вы отправляете MIME через HTTP, вы должны добавить заголовок «Content-Type», указав, что вы делаете, и ваши границы, содержимое заголовка может выглядеть следующим образом:

    многослойную/форм-данных ; граница = d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

  4. В теле сообщения, граница должна предшествовать "-", как:

    --d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

Но после этих правил (и this полезным ответ) Мне не удалось сгенерировать запрос POST, который будет принимать сервер. Я что-то упускаю? У меня что-то не так?

ответ

57

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 "--" 

предшествующему -- является обязательным для каждого границы, используемые в сообщение, а завершающий -- является обязательным для границы закрытия (закрывающий разделитель). Так многочастному тело с тремя частями тела с boundary как границей может выглядеть следующим образом:

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

пожалуйста объяснить * Транспортно-отступы * также –

+2

нам нужны CRLF после границы закрытия? – johnlowvale

+1

@johnlowvale '[CRLF epilogue]', поэтому я предполагаю, что это необязательно для завершения CRLF в соответствии с [bnf grammar] (https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form). См. Раздел ** Варианты **. –

Смежные вопросы