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