有很多关于 HTTP/2协议的主题,但我想知道是否有一个工作网站与此协议。
也就是说。
我们可以决定使用 http://或 https://,但是如何编写 HTTP/2请求呢?
http://
https://
我知道这个协议取决于服务器的性能,但我无法找到一种方法来检查一个网站,例如 google.com,是否启用了 HTTP/2支持。
google.com
正如我在这张图片中看到的,所有现代浏览器都支持这种协议。 我还没有看到任何可能看起来像新一代协议的链接。
我们是在不知情的情况下使用 HTTP/2协议,还是只是一个童话故事?
打开浏览器开发工具并切换到网络选项卡。如果 HTTP/2可用,您将看到 H2。
HTTP/2重用 HTTP://和 https://方案,而不是使用新的方案。
所有浏览器只支持 https://上的 HTTP/2,而 SSL/TLS 协商的一部分是通信双方是否支持 HTTP/2并愿意使用它(使用称为 ALPN 的 SSL/TLS 扩展)。
这样做的好处是你可以直接连接到一个网站,如果你的浏览器支持它,它会自动协商 HTTP/2,如果不支持,它会自动回到 HTTP/1.1。
所以为了测试对 HTTP/2的支持,你可以像 Markus 建议的那样使用浏览器(例如,确保在 Chrome 中将 Protocol 列添加到 Network 选项卡中)。
或者您可以使用像 https://tools.keycdn.com/http2-test这样的在线测试程序
或者可以使用命令行工具,如 openssl (假设它是使用 ALPN 支持构建的) : openssl s_client -alpn h2 -connect www.example.com:443 -status。
openssl s_client -alpn h2 -connect www.example.com:443 -status
大多数大型网站(如 Twitter、 Facebook、 Amazon、 Stack Overflow)现在都在使用 HTTP/2。
你可以检入: Chrome 开发工具(F12)→ 网络→ 规定。
它将告诉您所使用的协议和每次传输的域。
HTTP/1.1 = HTTP/1.1 H2 = HTTP/2
注意: 如果您看不到 规定列,只需右键单击任何标题并检查 “协议”标签。
使用 F12在 Chrome 中打开 开发工具,然后转到 网络选项卡。
右键单击一行,选择 标题选项,然后从菜单中选择 规定。
你也可以使用一个很酷的 Chrome/Firefox 扩展 < a href = “ https://chrome.google.com/webstore/Details/http2-and-SPDY-ator/mpbpobfflnpcgagjijhmgnchggcjblin/related? hl = en”rel = “ nofollow noReferrer”> HTTP/2和 SPDY 指示器 来检查网站协议。
您可以使用 curl命令查找特定网站是否支持 HTTP/2协议。在下面的示例中,只需用要检查 HTTP/2支持的 URL 替换 https://www.cloudflare.com/:
curl
https://www.cloudflare.com/
% curl -vso /dev/null --http2 https://www.cloudflare.com/
如果在输出消息中看到 offering h2,这意味着给定的 URL 支持 HTTP/2。例如:
offering h2
.... * ALPN, offering h2 * ALPN, offering http/1.1 ....
使用 curl命令作为现有 curl 解决方案的解决方案对我不起作用。curl提供了一个交换机 --http2-prior-knowledge,它确保在不尝试 HTTP/1.1升级请求的情况下直接发送 HTTP/2请求。下面的例子可以帮助理解不同情况下的行为:
--http2-prior-knowledge
Curl to Google 支持 HTTP/2-自动选择 HTTP/2。
curl -Iks https://www.google.com/robots.txt HTTP/2 200 accept-ranges: bytes vary: Accept-Encoding content-type: text/plain content-length: 7199 cross-origin-resource-policy: cross-origin date: Fri, 21 May 2021 13:39:02 GMT expires: Fri, 21 May 2021 13:39:02 GMT cache-control: private, max-age=0
卷曲到我的服务器,它不支持 HTTP/2-响应状态 HTTP/1.1
curl -Iks https://myserver/reset HTTP/1.1 502 Bad Gateway connection: close content-length: 0
使用 --http2开关卷曲到我的服务器。响应仍然是 HTTP/1.1
--http2
curl -Iks --http2 https://myserver/reset HTTP/1.1 502 Bad Gateway connection: close content-length: 0
使用 --http2-prior-knowledge卷曲到我的服务器。注意,没有得到任何响应。
curl -Iks --http2-prior-knowledge https://myserver/reset
如果使用 v开关(详细)执行以上操作,则输出将包括以下行。
v
* http2 error: Remote peer returned unexpected data while we expected SETTINGS frame. Perhaps, peer does not support HTTP/2 properly.
注:
k
insecure
I
HEAD
curl -I --http2 -s https://domain.url/ | grep HTTP
这个问题已经被回答了,但我还是要回答这个问题。
访问 Chrome 的 Developer Tools,你可以通过以下方式打开开发工具:
Developer Tools
Network
F12
Three dots aka ellipsis -> More Tools -> Developer Tools
在 Name列中右键单击并确保选中了 Protocol。现在您可以看到 Protocol列,其中 h2指的是 HTTP/2,h3指的是 HTTP/3,以防您看到它们,而 http/1.1指的是 HTTP/1.1。
Name
Protocol
h2
HTTP/2
h3
HTTP/3
http/1.1
HTTP/1.1
你可以通过以下方式查看 Protocol列:
右键单击您在 Name列下看到的行,然后单击 Header Options并选中 Protocol。
Header Options
你也可以免费从 给你检查,例如: 在那里键入 https://google.com或您的网站与 HTTPS 协议。
还有一个 Chrome 浏览器扩展可以帮助你。参考链接是 给你。
您也可以使用 curl命令来检查。
如果您喜欢 CLI,可以使用此命令
curl -sI --http2 https://stackoverflow.com/ | grep -i "HTTP/2"