直接答案:25 个首页中,23 个完成 TLS 握手:12 个在 ALPN 中协商 h2、10 个协商 http/1.1、1 个没有协商(E01)。没有任何站点返回 Alt-Svc,因此 HTTP/3 广告为 0。21 个首页能取回 HTTP 200;E13、E27 因证书校验失败、E04、E16 因握手失败没有 HTTP 响应。

本文只测协议协商与 Alt-Svc 头,不发送 HTTP/2 业务请求,也不判断页面加载速度。

25
首页站点
12
协商 h2
10
http/1.1
0
Alt-Svc
0
h3 广告
21
HTTP 200

方法:ALPN 握手 + 一次只读头的 GET

2026-11-08 06:40–06:41,对第 4 期 25 个首页的最终主机先做带 SNI 的 TLS 握手,ALPN 列表为 h2,http/1.1,记录服务器选中的协议与 TLS 版本;再对同一主机发一次 GET,只读响应头(超时 12 秒),读取 Alt-Svc,不保存正文。失败站点不做重试:E04、E16 在 TLS 检查中已连续失败。

项判定边界
协商 h2ALPN 选中 h2握手能力,不等于页面实际走 h2
http/1.1ALPN 选中 http/1.1 或无 ALPN 但有 HTTP 响应—
未协商TLS 握手成功但没有 ALPN浏览器会回落到 HTTP/1.1
Alt-Svc响应头出现 Alt-Svc缺失不代表 CDN 不支持 h3
h3 广告Alt-Svc 含 h3 或 h3-*不实际建立 QUIC 连接

结果:12 个 h2,10 个 http/1.1

ALPN 结果站点数占 25
h21248.0%
http/1.11040.0%
未协商 ALPN14.0%
握手失败28.0%

h2 已是相对多数,但不是默认:10 个站点仍协商 http/1.1,1 个(E01)在 TLS 1.2 上没有 ALPN,浏览器只能回落到 1.1。对这一批装备企业官网来说,HTTP/2 更像“部分启用”,而不是统一基线。

与 TLS 版本交叉:h2 不要求 TLS 1.3

TLS 版本h2http/1.1未协商合计
TLS 1.3117018
TLS 1.21315
握手失败———2

E25 在 TLS 1.2 上协商到 h2,说明协议版本与 ALPN 是两个独立维度:升级 TLS 1.3 不会自动带来 h2,启用 h2 也不要求先升到 1.3。反过来,11 个 TLS 1.3 站点里有 7 个仍只协商 http/1.1,说明服务端或 CDN 没有开启 h2。

Alt-Svc:0/25 广告 HTTP/3

21 个成功响应中没有一个返回 Alt-Svc,h3 广告为 0。浏览器只有在收到 Alt-Svc: h3=":443"; ma=... 后才会在后续请求尝试 HTTP/3;没有广告时,即使 CDN 已支持 h3,也不会从 HTML 响应里被发现。可能原因包括源站未配置、CDN 关闭 h3、或中间层剥离响应头;本文只记录头是否存在,不归因。

Alt-Svc 与 HTTP/3站点数说明
有 Alt-Svc0—
广告 h30—
无 Alt-Svc21浏览器不会尝试 h3
无 HTTP 响应4E04、E13、E16、E27

对验收的启示

  1. h2 要显式验收。 23 个完成握手的站点里仍有 10 个协商 http/1.1;不能假设“上了 HTTPS 就有 h2”。
  2. 先确认 CDN 与源站都开了 h2。 TLS 1.3 站点里也有 7 个只走 1.1,问题可能在边缘或回源配置。
  3. h3 尚未进入这批站点。 0 个 Alt-Svc 说明连“广告”都没有;要上 h3 先检查 CDN 开关与响应头改写。
  4. ALPN 只是握手能力。 协商 h2 不代表每个页面都走 h2;需要看实际请求日志或开发者工具。
  5. 协议升级要回归测试。 证书、缓存、WAF 与压缩都可能随协议变化;验收清单可参考网站建设服务。

局限

  • 只测协商:未发送 HTTP/2 业务请求,不验证应用层行为或页面加载。
  • 未连 h3:只读 Alt-Svc,未建立 QUIC 连接,也不判断 UDP 443 是否可达。
  • 单次快照:2026-11-08 06:40–06:41,CDN 与 WAF 可能按地区或时间变化。
  • 4 个站点无 HTTP 数据:E04、E16 握手失败,E13、E27 证书校验失败;见 首页 HTTPS 证书与 TLS pilot。
  • 25 站 pilot:不外推行业。

数据与复算

匿名数据:equipment-homepage-http-protocol-2026.csv(25 行 × 11 列:握手状态、TLS 版本、ALPN 原值与分类、HTTP 状态、Alt-Svc 是否存在、h3 广告、max-age、检查时间、错误类型)。仓库内为 docs/research/2026-11-homepage-http-protocol.csv。

解析:scripts/http_protocol_probe.py;单元测试 scripts/test_content_http_protocol.py(10 项,无网络)。运行:

python -m unittest scripts.test_content_http_protocol

配套:首页 HTTPS 证书与 TLS pilot、首页 canonical 与协议跳转 pilot、首页缓存、压缩与重访 pilot。

数据来源与口径

  1. 样本:第 4 期 25 个首页的最终主机(同一批 sample_id)。
  2. ALPN:Python ssl,列表 h2,http/1.1,SNI 使用主机名,超时 6 秒。
  3. Alt-Svc:对同一主机发一次 GET,只读响应头,超时 12 秒,不保存正文。
  4. 判定:ALPN 选中值原样记录;Alt-Svc 按 RFC 7838 的协议标识解析。

常见问题

协商 h2 就一定更快吗?

不一定。h2 的多路复用是否受益取决于资源数量、并发与服务器实现;本文只记录协议协商,不测加载时间。

为什么 HTTP/3 广告是 0?

21 个成功响应都没有 Alt-Svc 头。浏览器只有看到 Alt-Svc: h3=":443" 才会尝试 HTTP/3;没有广告时,即使 CDN 支持 h3 也不会被发现。

h2 需要 TLS 1.3 吗?

不需要。E25 在 TLS 1.2 上协商到 h2;TLS 版本与 ALPN 协议是两个维度。

E04、E16 为什么没有协议数据?

两者都在 TLS 握手阶段失败:E04 连接超时、E16 收到 TLS 内部错误;没有握手就无法读取 ALPN。

25 个站点能代表行业吗?

不能。这是第 4 期同一批装备企业官网的 pilot,只描述这 25 个首页。

数据能复核吗?

可以。公开 CSV 25 行 × 11 列;scripts/http_protocol_probe.py 有 10 项离线单测。

关于作者

凌壹信息Official(交付团队),负责企业网站、品牌与智能制造项目的需求梳理、方案与验收协作。本文只记录单次 ALPN 协商与 Alt-Svc 响应头,不判断页面实际协议、加载性能、QUIC 可达性或站点配置,也不构成对任何站点的最终结论;25 站 pilot,不外推行业。

canonical 缺失是首页的常见缺口

25 站:9 个 canonical、16 个缺失;8 个 og:url。

预约内容验收方案