Я не могу сказать от RFC 2616 , должен ли клиент HTTP принимать ответ 204 Нет содержимого, который включает Content-Length: 0 или Transfer-Encoding: chunked headers. Эти заголовки, кажется, нарушают работу некоторых HTTP-клиентов и прокси, которые, по-видимому, пытаются прочитать пустое тело ответа, но спецификация читает :
- Любое ответное сообщение, которое "НЕ ДОЛЖНО", включает тело сообщения (например,
1xx, 204 и 304 ответов и
любой ответ на запрос HEAD)
всегда завершается первым пустым
строка после полей заголовка,
независимо от полей заголовка объекта
присутствует в сообщении.
Для меня «независимо от полей заголовка объекта» подразумевает, что клиенты должны терпеть такое положение дел. HTTP-библиотека Erlang выбрала эту интерпретацию. Однако lighthttpd и IBM выбрали противоположную интерпретацию - сервер не должен включать эти заголовки для ответов, для которых запрещено иметь тела.
Так должно ли веб-приложение удалять эти заголовки из ответа, или сетевая инфраструктура и клиенты должны переносить эти заголовки на 204 Нет содержимого, 304 Не изменено и т. Д.?