V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hguandl
V2EX  ›  Apple

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

  •  
  •   hguandl · 10 小时 36 分钟前 · 213 次点击

    迫于前段时间云服务器到期,我迁移了自己的网站。在测试连接时,我发现 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 提反馈,大家看看能不能复现类似的情况。

    1 条回复    2024-11-08 17:05:30 +08:00
    Aoang
        1
    Aoang  
       7 小时 33 分钟前
    不同的浏览器的实现不一样。

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

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

    如果没有 HTTPS 记录,那建立连接之初就不会用 HTTP/3 ,Safari 似乎不会自动升级至 HTTP/3 。Chrome/Firefox 倒是会去做自动升级,失败回退。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1808 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:39 · PVG 00:39 · LAX 08:39 · JFK 11:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.