Safari 似乎不支持 Alt-Svc 头来启用 HTTP/3,只能用 DNS 的 HTTPS RR 记录

13 小时 0 分钟前
 hguandl

迫于前段时间云服务器到期,我迁移了自己的网站。在测试连接时,我发现 Safari 无论如何也触发不了 HTTP/3 。我确认自己没有开代理,而且同样网络条件下 Google Chrome 是可以的。于是我开始研究这个神奇的现象。

首先我经过一些搜索,学到了一类新的 DNS 记录——HTTPS Resource Records (Type 65)。这条记录支持很多字段,其中就包含了 HTTP/3 。经过测试 Safari 可以通过此记录激活 HTTP/3 ,典型例子就是 Cloudflare 的网站(包括本站)。

上述概念其实是我第一次听说,此前我只知道通过添加 Alt-Svc 头来声明 h3 ,这样浏览器的后续连接就会尝试使用 HTTP/3 。然而这种设置对 Safari 似乎无效,典型例子是 NGINX QUIC Preview,我试了很多次都没有成功。

我印象里早期 HTTP/3 还是草案的时候,Safari 是可以的。在正式版发布后,官方文档 TN3102: HTTP/3 in your app 也都提到了这两种方案。不知道为什么我现在用最新版本就不行了。我打算给 Apple 提反馈,大家看看能不能复现类似的情况。

226 次点击
所在节点    Apple
1 条回复
Aoang
9 小时 57 分钟前
不同的浏览器的实现不一样。

Chrome 在 HTTP/3 可用时,会优先使用 HTTP/3 ,如果失败了,就回退至 HTTP/2 。

Safari 会并发尝试使用 HTTP/2 和 HTTP/3 ,谁先完成建立就用谁。

如果没有 HTTPS 记录,那建立连接之初就不会用 HTTP/3 ,Safari 似乎不会自动升级至 HTTP/3 。Chrome/Firefox 倒是会去做自动升级,失败回退。

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

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

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

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

© 2021 V2EX