Re: Не отдается картинка - client sent too long header line

Gena Makhomed gmm at csdoc.com
Thu Aug 9 18:57:13 UTC 2012


On 09.08.2012 20:29, Maxim Dounin wrote:

>>> Приходит не 200, приходит HTTP/0.9 ответ, потому как у nginx'а
>>> кончается буфер и он не знает, какой протокол использовал запрос - и
>>> предполагает минимальный из возможных.

причем, при таком ответе: Connection #0 to host www.cnn.com left intact
- что не соответствует HTTP/0.9, там еще не было keep-alive соединений.
( да, на www.cnn.com тоже установлен Server: nginx, как оказалось... )

наверное мало веб-клиентов сейчас смогут понять ответ по протоколу 
HTTP/0.9, даже если он будет корректно реализован на стороне nginx.
например, в новых версиях python поддержку HTTP 0.9 уже выбросили.

> сейчас обсуждается вопрос собственно ответа 414, когда
> кончился буфер на чтении uri.

например, гугловский веб-сервер GFE/2.0 в такой ситуации считает,
что минимальная версия протокола - это HTTP/1.0, а не HTTP/0.9
и отвечает по HTTP/1.0 на запрос от curl по протоколу HTTP/1.1

$ curl -v $(perl -e 'print "http://www.google.com/","414test"x2000')

HTTP/1.0 414 Request-URI Too Large
Server: GFE/2.0

$ curl -v $(perl -e 'print "http://www.google.com/","413test"x9000')

HTTP/1.0 413 Request Entity Too Large
Server: GFE/2.0

=====================================================================

On 09.08.2012 19:00, Maxim Dounin wrote:

 > Код ответа - 414.  Но поскольку ответ отправляется по протоколу
 > HTTP/0.9, в котором самого понятия "код ответа" нет, клиент его
 > не видит.

не все клиенты, которые понимают ответ HTTP/1.х смогут понять HTTP/0.9
и со временем таких клиентов, которые не поддерживают архаичные версии
HTTP протокола будет все больше. может быть лучше отвечать по HTTP/1.0
и сразу закрывать соединение с клиентом ?

-- 
Best regards,
  Gena



Подробная информация о списке рассылки nginx-ru