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 mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
