搞了个小程序,开发者工具正常,安卓正常,但是同事的苹果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');

})();

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐