implicit *LWS ?

Maxim Dounin mdounin на mdounin.ru
Чт Окт 7 20:07:37 MSD 2010


Hello!

On Thu, Oct 07, 2010 at 07:35:21PM +0400, Alexandre Snarskii wrote:

> On Wed, Oct 06, 2010 at 05:42:29PM +0400, Maxim Dounin wrote:
> > > 
> > > то есть nginx при проксировании обрезал весь контент поля начиная с CRLF.
> > > 
> > > То же самое происходит если пытаться передавать запрос на fastcgi backend,
> > > в параметре HTTP_ACCEPT я вижу только text/plain, text/html, но не */*.
> > > С другими хидерами происходит то же самое - как только встречается LWS - 
> > > поле "обрезается", что для proxy_pass, что для fastcgi_pass. 
> > > 
> > > Вопрос: это бага или фича ? Если фича - обойти как-нибудь можно ? 
> > 
> > Это фича, LWS не поддерживаются, да и в HTTPbis они deprecated.
> 
> thanks. 
> Хотя, jimho, не поддерживать deprecated и not recommended headers - это 
> все-таки нарушение robustness principle (be liberal in what you accept). 

Кто ж спорит (хотя на самом деле с robustness principle нужно быть 
очень осторожным, ибо он любит оборачиваться security flaws).  Но 
хорошего патча нет, а приоритет у этой задачи всилу описанных 
обстоятельств, скажем так, низкий.

> > Если очень нужно чтобы заработало вот прям здесь и сейчас - 
> > где-то в районе nginx@ пробегал патч, но он ужасненький:
> 
> "Он хуже, он просто кю!". 
> 
> > http://nginx.org/pipermail/nginx/2010-September/022608.html
> 
> См. аттач. Это пока "концепт-кар", толком не оттестированный, но, jimho, 
> более правильный. 
> Куда пришлось залезть: 
> а) изменить state-машину парсера заголовков для проверки LWS, 
> с добавлением (новой) точки выхода - incomplete (в случаях когда
> буфера не хватает для read-ahead)

Я уже писал об этом Петру в том треде, и тут повторю: мне 
вообще не нравится идея look-ahead, она плохая и негодная.

> б) изменить логику чтения запроса, разрешив чтение в случае когда
> буферизовано менее двух байт. 

Так нельзя - эти два байта вполне могут, скажем, вообще завершать 
запрос.

> > А что за чудо генерит такие запросы?
> 
> Одно доморощенное чудо когда-то решило, что User-Agent стоит 
> разбить на две строки, "ведь это ж rfc!!" :) А когда встал вопрос
> о том, а можем ли мы делать content-switching по версии агента - 
> эта грабель и вылезла.

Ok, понятно.

Maxim Dounin



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