У меня есть захват Wireshark запроса POST, отправленного IE10. Запрос POST выдается в соответствии с RFC 1867 и включает boundary
:
Content-Type: multipart/form-data; boundary=945637143527273; charset=UTF-8
Что мне кажется довольно странным, так это
charset=UTF-8
часть после токена
boundary=945637143527273;
Когда я смотрю на раздел Examples
в RFC, заголовок Content-Type
всегда завершается границей, а завершающие данные, такие как charset
, отсутствуют.
Итак, было ли какое-то дополнение к спецификации, позволяющее такое поведение, должны ли конечные данные игнорироваться или я (как HTTP-сервер, совместимый со спецификацией) отбрасываю запрос и отправляю ошибку клиенту?
Изменить: дальнейшее изучение этой темы привело меня к следующему вопросу:
Какие правила применяются к границе MIME?
Принятый ответ относится к RFC 2046, где граница указывается следующим образом. :
boundary := 0*69<bchars> bcharsnospace bchars := bcharsnospace / " " bcharsnospace := DIGIT / ALPHA / "'" / "(" / ")" / "+" / "_" / "," / "-" / "." / "/" / ":" / "=" / "?"
Итак, поскольку bcharsnospace
не содержит ;
, часть charset=UTF-8
явно не принадлежит границе. Должен ли я игнорировать его в этом случае или это недопустимое значение для заголовка Content-Type
?
;
и делите на=
, чтобы получить подзначения заголовков. Затем вы просто ссылаетесь на значения'boundary'
и'charset'
... независимо от их порядка. - person CodeAngry   schedule 14.03.2015