<div dir="ltr"><div>выкрутились таким способом:<br><br>map $http_content_length $http2_content_length {<br>'' 0;<br>default $http_content_length;<br><br>}<br><br><br><br></div>и при проксировании:<br><br><br>proxy_set_header Content-Length $http2_content_length;<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">20 октября 2015 г., 15:53 пользователь Илья Шипицин <span dir="ltr"><<a href="mailto:chipitsine@gmail.com" target="_blank">chipitsine@gmail.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>кажется, я ввел вас в заблуждение.<br></div>сафари действительно забывает добавить Content-Length в случае http/2, а 411 отвечает бекенд (iis).<br></div>вопрос снимается<br></div><div class="gmail_extra"><br><div class="gmail_quote">20 октября 2015 г., 15:39 пользователь Ruslan Ermilov <span dir="ltr"><<a href="mailto:ru@nginx.com" target="_blank">ru@nginx.com</a>></span> написал:<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>On Tue, Oct 20, 2015 at 03:13:56PM +0500, Илья Шипицин wrote:<br>
> забыл уточнить - баг воспроизводится на iOS9 и Mac OS 10.11<br>
><br>
> 20 октября 2015 г., 15:00 пользователь Илья Шипицин <<a href="mailto:chipitsine@gmail.com" target="_blank">chipitsine@gmail.com</a>><br>
> написал:<br>
><br>
> > Добрый день!<br>
> ><br>
> > налетели на ситуацию<br>
> ><br>
> > 1) браузер сафари (без разницы - десктопный или мобильный)<br>
> > 2) включен http2<br>
> > 3) отправляется POST с пустым телом<br>
> > 4) запрос проксируется с nginx на http-апстрим<br>
> ><br>
> > в результате получается, что сафари, видя, что тело пустое - не добавляет<br>
> > Content-Length, а nginx, видя, что Content-Length отсутствует - возвращает<br>
> > 411<br>
> ><br>
> > давайте с этим что-нибудь сделаем ?<br>
> ><br>
> > стенд для воспроизведения бага: <a href="https://http2.skbkontur.ru" rel="noreferrer" target="_blank">https://http2.skbkontur.ru</a><br>
> ><br>
> > Илья Шипицин<br>
<br>
</div></div>На основании чего сделан вывод о том, что это имеет какое-либо<br>
отношение к HTTP/2?<br>
<br>
С обычным HTTP POST-запросом на сайте наблюдается такое же поведение:<br>
<br>
$ curl -v --data '' -H 'content-length:' <a href="http://http2.skbkontur.ru/" rel="noreferrer" target="_blank">http://http2.skbkontur.ru/</a><br>
* Connected to <a href="http://http2.skbkontur.ru" rel="noreferrer" target="_blank">http2.skbkontur.ru</a> (46.17.201.207) port 80 (#0)<br>
> POST / HTTP/1.1<br>
> Host: <a href="http://http2.skbkontur.ru" rel="noreferrer" target="_blank">http2.skbkontur.ru</a><br>
> User-Agent: curl/7.43.0<br>
> Accept: */*<br>
> Content-Type: application/x-www-form-urlencoded<br>
><br>
< HTTP/1.1 411 Length Required<br>
< Server: nginx<br>
< Date: Tue, 20 Oct 2015 10:35:48 GMT<br>
< Content-Type: text/html; charset=us-ascii<br>
< Content-Length: 344<br>
<br>
nginx по собственной воле никогда не возвращает 411, так что это<br>
скорее всего проделки вашего бэкенда.<br>
<div><div><br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div></div></blockquote></div></div></div><br></div>
</blockquote></div><br></div>