问题描述

在线更新某程序,发现更新加载一半会报错,获取阿里云OSS签名接口失败

提示 ERR_HTTP2_PROTOCOL_ERROR

Edge版本 89.0.774.75 (官方内部版本) (64 位)

临时解决方案

谷歌后发现可以使浏览器信任所有令牌

浏览器地址输入
Edge:edge://flags/
Chrome:chrome://flags/ 

搜索:Block insecure private network requests 和 Enable Trust Tokens
将值从 Default 改为 Enable
点右下角的 ReLaunch 按钮快速重启浏览器即可

图片[1]-“ERR_HTTP2_PROTOCOL_ERROR”浏览器报错【已解决】-KLYI

原因分析

为什么Ajax请求报错?

Access-Control-Allow-Origin 是用来设置接口跨域访问的.设置为*表示接受任何域的请求
Access-Control-Allow-Credentials 是用来设置浏览器是否需要将服务器返回值暴露给用户
遵循W3C准则,当请求Response头的Access-Control-Allow-Origin不是当前域,就不会将返回数据给js
所以接口设置Access-Control-Allow-Originv为*,,前端无法获取到接口返回的数据

而程序开发者在此并没有遵循W3C准则,会忽略http header的设置,所以导致这个Ajax请求报错,更新失败

© 版权声明
评论 抢沙发

请登录后发表评论