如果 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 下没问题
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.