Выставлять connection close

Kirill A. Korinskiy catap+nginx at catap.ru
Sat May 16 04:29:09 MSD 2009


At Sat, 16 May 2009 04:13:49 +0400,
Maxim Dounin <mdounin at mdounin.ru> wrote:

> > Т.е. я понимаю что:
> > 
> >  - не писать content-length валидно для запросов без тела
> 
> Да.  А писать - невалидно, причём "MUST NOT".
> 

А есть ли разница между не имеет тело и имеет нулевой длины?


> >  - игнорировать тело валидно для запросов у которого тела не может
> >    быть. Т.е. его может послать сервер, например слова No Content — но
> >    их клиент должен игнорировать.
> 
> Угу.  Только если скажем в ответ на HEAD или у 204-го ответа 
> вернули тело - это мусор в протоколе, и keepalive ушёл в лес.  
> Единственное разумное действие клиента в данной ситуации - 
> куда-нибудь выругаться и закрыть соединение.
> 

Но если клиенту сказали что тело будет 302 октета, и их передали —
хотя их там быть не должно — клиент должен тело проигнорировать. Я не
думаю что это мусор, ага?

> > во всем этом бреде (я про http, ага) слишком много противоречий и как
> > интерпретируют их авторы потенциального клиента — не известно.
> > 
> > Все что я предлагаю — это для перестраховки слать Content-Length: 0
> > когда нет тела, что бы клиент который ждет тело длинной которой
> > сказали или fin тоже остался доволен.
> 
> См. моё предыдущее письмо - это невалидно, и может иметь 
> слабопредсказуемые последствия.
> 
> При текущем состоянии поддержки 204 в клиентах - использовать его 
> можно только в строго контроллируемых условиях, при необходимости 
> исправляя баги в клиентах.  Пытаться делать workaround'ы - себе 
> дороже, и может выйти боком в самых неожиданных местах.
> 

Я пока нашел один клиент с кривой поддержкой 204 - это wget. У
остальных оно идентичное — так что не все так плохо.

Проблема в том что мне нужно именно поведение No Content.

-- 
wbr, Kirill





More information about the nginx-ru mailing list