HTTP 1.1 TE заголовок
Читая RFC2616, я наткнулся на заголовки TE и Transfer Encoding для кодирования по частям. У меня следующий вопрос по этим вопросам:
- Если HTTP-сервер отклоняет запрос из-за наличия заголовка TE, соответствует ли он требованиям RFC?
- Если HTTP-клиент отправляет запрос с TE-заголовком и списком t-кодировок и значений q, и если такое значение q равно 1, обязательно ли HTTP-серверу отправлять данные ответа с этой кодировкой, например: TE: deflat;q=0,5 gzip;q=1 (Это обязывает сервер сжимать данные сущности в gzip и отправлять их или может сервер игнорировать это и отправлять данные обычным способом?).
- Если HTTP-сервер не поддерживает получение фрагментированных данных (я знаю, что это противоречит RFC, но предназначено), каким может быть правильный код ответа об ошибке, который будет отправлен обратно клиенту, чтобы клиент в следующий раз не отправлял PUT запрос в клочья.
Заранее благодарим за ваш ценный вклад и ответы.
1 ответ
В RFC 7230 говорится,
Поле заголовка "TE" в запросе указывает, какие кодировки передачи
кроме порции, клиент готов принять ответ и
желает ли клиент принять поля трейлера в
кодирование передачи по частям.
Это означает, что TE является просто объявлением клиента и может быть проигнорировано следующим сервером. У сервера HTTP не должно быть оснований отклонять запрос с заголовком TE. Если сервер не поддерживает chunked, то он не поддерживает HTTP 1.1 и поэтому должен интерпретировать входящий запрос, как если бы это был запрос 1.0, и ответить соответствующим образом. Смотрите здесь.