bug or feature? iOS 的浏览器,访问 HTTP/2 的网站,服务端返回不合法的头部时,浏览器会出现 ERR_FAILED

2017-12-19 18:06:46 +08:00
 gstqc

如果 HTTP/2 的网站返回以下之一的头部,不管值是什么

connection
transfer-encoding
keep-alive
upgrade
proxy-connection

iOS 浏览器就会出现 ERR_FAILED,无法正常显示页面


经测试 Windows 和 Android 的 Chrome、Firefox 均正常
Chrome 会删除这些头部,Firefox 会忽略这些头部


根据 RFC7540,这些头部不应该出现在 HTTP/2 的网站中
https://tools.ietf.org/html/rfc7540#section-8.1.2.2


如果 nginx 作为反代,后端是 http 协议,那 nginx 对于 HTTP/2 的连接,是会删除这些头部的,除了 Upgrade 外
所以如果后端返回的头部有 Upgrade,经过 nginx 反代+https,那 iOS 就会无法访问


测试 iOS 10 和 11 均表现如此


另:测试 Websocket over HTTP/2 在 iOS 下没问题

1921 次点击
所在节点    iOS
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/416055

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX