Re: reverseproxy ломается заголовок ответа Content-Type

Maxim Dounin mdounin на mdounin.ru
Вт Июл 5 13:32:08 UTC 2016


Hello!

On Tue, Jul 05, 2016 at 02:40:11PM +0300, Andrey Oktyabrskiy wrote:

> On 2016-07-05 13:33, Maxim Dounin wrote:
> >>A proxy or gateway that receives an obs-fold in a response message
> >>   that is not within a message/http container MUST either discard the
> >>   message and replace it with a 502 (Bad Gateway) response, preferably
> >>   with a representation explaining that unacceptable line folding was
> >>   received, or replace each received obs-fold with one or more SP
> >>   octets prior to interpreting the field value or forwarding the
> >>   message downstream.
> >>
> >>То есть он по идее должен либо вернуть 502 ошибку, либо преобразовать
> >>перевод каретки в пробел и отдать клиенту. Но он засовывает значения
> >>после
> >>LineFold в заголовок Connection:
> >
> >Как я уже говорил ранее, nginx не умеет обрабатывать line folding,
> >совсем.  Он просто рассматривает это как заголовки, начинающиеся с
> >пробела, и отдаёт клиенту в [почти] том виде, в каком получил от
> >бекенда.  Последующее "склеивание" с другим заголовком - лишь
> >следствие того, что заголовок специальный, и из-за этого порядок
> >заголовков в ответе поменялся, и уже ваш клиент, поддерживающий
> >line folding, засунул дополнительные строки в тот заголовок,
> >который оказался перед ними.
> >
> >Допрограммировать в этом месте 502 с ошибкой в логах - возможно,
> >имеет смысл.
> Тогда уж лучше сделать настраиваемым: 502 или склеивать. Не всегда есть
> возможность контролировать поведение бакенда.

Склеивать - вряд ли.  Использование folding'а в мире HTTP - 
встречается чуть реже, чем практически никогда, и явно запрещено 
современными RFC.  От попыток склеивать - вреда будет практически 
гарантированно больше, чем пользы.  Так что с точки зрения nginx'а 
гораздо проще просто попращаться с такими бекендами, и больше 
никогда не думать о том, что они вообще бывают.

-- 
Maxim Dounin
http://nginx.org/



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