如何知道请求是使用 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.1
或HTTP/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 执行的的主要内容,如果未能解决你的问题,请参考以下文章