Hello! On Tue, Jul 05, 2016 at 03:36:34AM -0400, sergeydeg wrote:
> Да, Вы правы. Дабаг показал, что там всё-таки LineFolding. > Я изначально смотрел через Fiddler, а он как раз интерпретирует ответ по > RFC7230. > > A user agent that receives an obs-fold in a response message that is > not within a message/http container MUST replace each received > obs-fold with one or more SP octets prior to interpreting the field > value. > > А вот NGINX как раз немного косячит IMHO. > 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 с ошибкой в логах - возможно, имеет смысл. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
