检测JavaScript中的连接协议(HTTP/2、spdy)

14

是否有可能获取浏览器用于获取活动页面的协议?
类似这样:


performance.navigation.protocol // e.g. "HTTP/2" or "SPDY/3.1" or "HTTP/1.1"

我知道在服务器端可以检测协议然后传递信息,但我正在寻找一个JS的解决方案。

(一个类似的问题 包含了一个错误的链接和没有答案)


你能用Ajax发送HEAD请求到location.href吗?编辑:不用管了,反正我也看不到会指示它的响应属性... - dandavis
你需要这个做什么? - Bergi
1
performance.getEntries()[0].nextHopProtocol 在 Chrome 中可用。 - everconfusedGuy
1个回答

10

它正在被标准化performance.timing.nextHopProtocol,但是Chrome已经在window.chrome.loadTimes().connectionInfo下有了一个非标准实现

if ( window.performance && performance.timing.nextHopProtocol ) {
    console.log('Protocol:' + performance.timing.nextHopProtocol);
} else if (window.performance && window.performance.getEntries) {
    console.log(performance.getEntries()[0].nextHopProtocol);
} else if ( window.chrome && window.chrome.loadTimes ) {
    console.log('Protocol:' + window.chrome.loadTimes().connectionInfo);
} else {
    console.log("Browser does not expose connection protocol");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接