implicit *LWS ?
Alexandre Snarskii
snar на snar.spb.ru
Чт Окт 7 19:35:21 MSD 2010
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).
> Если очень нужно чтобы заработало вот прям здесь и сейчас -
> где-то в районе nginx@ пробегал патч, но он ужасненький:
"Он хуже, он просто кю!".
> http://nginx.org/pipermail/nginx/2010-September/022608.html
См. аттач. Это пока "концепт-кар", толком не оттестированный, но, jimho,
более правильный.
Куда пришлось залезть:
а) изменить state-машину парсера заголовков для проверки LWS,
с добавлением (новой) точки выхода - incomplete (в случаях когда
буфера не хватает для read-ahead)
б) изменить логику чтения запроса, разрешив чтение в случае когда
буферизовано менее двух байт.
> А что за чудо генерит такие запросы?
Одно доморощенное чудо когда-то решило, что User-Agent стоит
разбить на две строки, "ведь это ж rfc!!" :) А когда встал вопрос
о том, а можем ли мы делать content-switching по версии агента -
эта грабель и вылезла.
--
In theory, there is no difference between theory and practice.
But, in practice, there is.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: src-http-ngx_http_parse.c.patch
Type: text/x-diff
Size: 3033 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20101007/daec294a/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: src-http-ngx_http_request.c.patch
Type: text/x-diff
Size: 707 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20101007/daec294a/attachment-0001.patch>
Подробная информация о списке рассылки nginx-ru