HTTP Transfer-Encoding и запросы - PullRequest
       20

HTTP Transfer-Encoding и запросы

4 голосов
/ 28 марта 2009

спецификация HTTP гласит, что заголовок Transfer-Encoding разрешен для запросов, но какой код ошибки должен ответить сервер, если он не понимает, что задано Transfer-Encoding.

Насколько я знаю, стандарт HTTP не охватывает эту возможность, но, возможно, я просто упустил это из виду.

Ответы [ 6 ]

4 голосов
/ 28 марта 2009

Неизвестная кодировка передачи должна вызвать ошибку HTTP 501 «НЕ РЕАЛИЗОВАНО». Это то, что делает Apache, по крайней мере.

Также см. http://argray.com/unixfaq/httpd_error_codes.shtml

Редактировать: указатель на соответствующий раздел RFC: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.2

3 голосов
/ 30 марта 2009

Я согласен с тем, что ответ на этот вопрос неочевиден, и он был включен в список рассылки HTTP WG .

ОБНОВЛЕНИЕ: Бьёрн Х. справедливо указывает:

Раздел 3.6 RFC 2616:

Сервер, который получает Entity-Body с передачей кодирования не понимает ДОЛЖЕН вернуться 501 (не реализовано) и закройте
подключение.

Так что это уже решает эту проблему.

1 голос
/ 19 октября 2012

В основном личное мнение.

Я всегда думал, что ошибки 5xx - это реальные ошибки программирования, как будто что-то упало. Если сервер не понимает запрос, я бы сказал, что ошибка 4xx является лучшим ответом, поскольку проблема заключается в том, что запрос не является неудачным процессом на сервере. Я не уверен, какой 4xx, но есть несколько, поэтому выбор не должен быть трудным.

0 голосов
/ 30 октября 2012

Возможно, непонимание кусочного кодирования должно быть 500 Внутренняя ошибка сервера , а не 501, потому что RFC-2616 говорит, что сервер ДОЛЖЕН это понимать.

Однако, если сервер решает не принимать запросы с разбитыми телами и хочет обвинить клиента в этом, один из способов сделать это по закону будет 411 Длина обязательна - так как он не должен используйте Content-Length и Transfer-Encoding одновременно, и отправлять запрос без них в любом случае нецелесообразно.

0 голосов
/ 28 марта 2009

Запрос с неверным Transfer-Encoding для версии HTTP искажен. Поэтому сервер должен ответить 400 Bad Request.

0 голосов
/ 28 марта 2009

RFC немного неясен, но ИМХО это должно быть 406 Недопустимо .

...