搞了个小程序,开发者工具正常,安卓正常,但是同事的苹果ios测试报错request:fail 未能完成该操作。协议错误
看了一下,说是ios不支持http2,那就只能把http2禁用掉了。
查了资料
nginx的配置文件里listen 443 ssl http2;
去掉http2listen 443 ssl;
保存,还是不行。最后查了大半天,
原来同一个服务器的其他站点也不能开启http2,不然就不行,
于是把所有站点的配置都改一遍把http2去掉,终于OK了。真是神坑 - _ -
下面这一段js可以用来判断站点是否使用http2,在谷歌浏览器访问站点以后控制台执行(function(){
// 保证这个方法只在支持loadTimes的chrome浏览器下执行
if(window.chrome && typeof chrome.loadTimes === 'function') {
var loadTimes = window.chrome.loadTimes();
var spdy = loadTimes.wasFetchedViaSpdy;
var info = loadTimes.npnNegotiatedProtocol || loadTimes.connectionInfo;
// 就以 「h2」作为判断标识
if(spdy && /^h2/i.test(info)) {
return console.info('站点使用了HTTP/2');
}
}
console.warn('站点没有使用HTTP/2');
})();