Является ли HTTP-приложение, которое отправляет Content-Length или Transfer-Encoding с нарушенным ответом 204 No Content?

StackOverflow https://stackoverflow.com/questions/912863

  •  06-09-2019
  •  | 
  •  

Вопрос

Я не могу отличить от RFC 2616 должен ли HTTP-клиент принимать ответ 204 No Content, который включает Content-Length:0 или Передача-Кодирование:фрагментированные заголовки.Эти заголовки, похоже, нарушают работу некоторых HTTP-клиентов и прокси, которые, по-видимому, пытаются прочитать пустое тело ответа, но спецификация гласит:

  1. Любое ответное сообщение, которое "НЕ ДОЛЖНО" включать тело сообщения (например, ответы 1xx, 204 и 304 и любой ответ на запрос HEAD) всегда завершается первым пустым строка после полей заголовка, независимо от полей заголовка объекта присутствует в сообщении.

Для меня "независимо от полей заголовка объекта" подразумевает, что клиенты должны мириться с таким положением дел.В HTTP - библиотека Erlang выбрал эту интерпретацию.Однако, лайтхттпд и IBM выбрал противоположную интерпретацию - что сервер не должен включать эти заголовки для ответов, которым запрещено иметь тела.

Итак, должно ли веб-приложение удалять эти заголовки из ответа, или сетевая инфраструктура и клиенты должны терпеть эти заголовки на 204 No Content, 304 Not Modified и т.д.?

Это было полезно?

Решение

В соответствии с RFC7230 (пожалуйста, смотрите http://tools.ietf.org/html/rfc7230#section-3.3.1) в конце страницы 29 говорится:

Сервер НЕ ДОЛЖЕН отправлять поле заголовка с кодировкой передачи в любом ответе с кодом состояния 1xx (информационный) или 204 (Без Содержимого).

Поэтому веб-приложение не должно отправлять эти заголовки вместе с ответом.

Другие советы

Я не могу сказать вам, что правильно, поскольку я не знаю протокол HTTP в таких деталях.

Однако вы должны спросить себя:

  1. Могу ли я изменить свое приложение, чтобы удалить эти заголовки?
  2. или я могу изменить потребителей моего приложения, чтобы они игнорировали эти заголовки?

На мой взгляд, в этом случае приложение не должно отправлять эти заголовки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top