如何知道请求是使用 HTTP 1.x 还是 HTTP2 执行的

Posted

技术标签:

【中文标题】如何知道请求是使用 HTTP 1.x 还是 HTTP2 执行的【英文标题】:How to know if a request is performed using HTTP 1.x or HTTP2 【发布时间】:2019-07-15 16:16:53 【问题描述】:

我想知道 javascript 客户端和 Node.js 服务器之间的请求是使用 HTTP1.x 还是 HTTP2 执行的。

我如何知道在 XMLHttpRequest、Chrome 控制台和 Node.js 中使用什么类型的协议?

【问题讨论】:

您是在问如何以编程方式执行此操作或如何观察它?如果稍后,则只需查看开发工具浏览器的网络选项卡并在请求标头中查找HTTP/1.1HTTP/2。你也可以使用curl 是的,如何在浏览器开发工具以及客户端和服务器上以编程方式观察它。 当浏览器(客户端)和服务器都支持 HTTP/2 时,它将用于来自浏览器的所有调用。你不能从你的节点 js 服务器上看出来吗? 我不相信您可以通过编程方式自行确定浏览器对 HTTP/2 的支持。然而,NodeJS 可以获取这些信息,但是如何获取它取决于你是使用 NodeJS 的内置 http 服务器还是使用像 express 这样的库。 查看***.com/questions/37829617/… 了解如何使用 express 在 nodeJS 中获取 HTTP 版本。 【参考方案1】:

标准一:performance.timing.nextHopProtocol

非标准实现:window.chrome.loadTimes().connectionInfo

您可以查看开发工具的网络选项卡,其中 h2 代表 HTTP2,

Protocol 列显示 h2 时,表示资源是使用 HTTP/2 发送的。 Protocol 列默认隐藏。右键单击表头并选择Protocol 以显示它。见Show more information for an example。

【讨论】:

以上是关于如何知道请求是使用 HTTP 1.x 还是 HTTP2 执行的的主要内容,如果未能解决你的问题,请参考以下文章

如何知道 node.js 中的请求是 http 还是 https

浏览器如何决定一个请求是用HTTP1还是HTTP2?

浏览器如何决定一个请求是用HTTP1还是HTTP2?

浏览器如何决定一个请求是用HTTP1还是HTTP2?

浏览器如何决定一个请求是用HTTP1还是HTTP2?

如何检查请求是通过 HTTP 还是 HTTPS [重复]