fst*_*str 16 javascript ajax google-chrome google-chrome-extension http2
我希望用户能够将其网站网址输入到Chrome扩展程序中的输入框中,Chrome扩展程序将使用AJAX请求或其他类似内容来检测并告知用户URL后面的服务器是否支持发送响应通过HTTP2.这可能吗?
也许WebRequest有办法获取这些信息?还是新的Fetch API?你的请求能否以某种方式告诉服务器只能理解HTTP2回复?我看不出明显的方式.
我知道你可以使用window.chrome.loadTimes().connectionInfo获取当前页面的协议,但这需要加载我不想做的整个页面.
示例URLS:
通过HTTP2发送:https://cdn.sstatic.net/
通过HTTP 1.1提供:https://stackoverflow.com/
HTTP/2 响应需要一个“状态”响应标头 - https://http2.github.io/http2-spec/#HttpResponse,因此要检查响应是否使用 HTTP/2,您可以在 extraInfoSpec 中使用该chrome.webRequest.onHeadersReceived事件"responseHeaders"。例如,对于您的测试用例:
chrome.webRequest.onHeadersReceived.addListener(function(details) {
var isHttp2 = details.responseHeaders.some(function(header) {
return header.name === 'status';
});
console.log('Request to ' + details.url + ', http2 = ' + isHttp2);
}, {
urls: ['https://cdn.sstatic.net/*', 'http://stackoverflow.com/*'],
types: ['xmlhttprequest']
}, ['responseHeaders']);
// Tests:
fetch('http://stackoverflow.com');
fetch('https://cdn.sstatic.net');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1023 次 |
| 最近记录: |