fetch http请求被转成https?
fetch http请求被转成https,以及fetch问题相关记录
- http自动被转成https
- 上传进度的获取
http自动被转成https
- 请仔细看下图
我们可以很简单的发现,我用的是原生api,然后请求一个http协议的,为什么报错提示的却是GET https://
why?按理来说,这个报错应该为http:// xxxx - 基于上面的问题,我们可以推测,这个fetch和标准的fetch有差异。
然后我们很显然会去思考这个差异是哪里的来的?我们可以做以下猜测
- 最容易改浏览器fetch api的方式就是window.fetch = xxx…,可能是做了类似操作引起了上面的问题。
- 浏览器出bug了
- 有其他东西影响了,原生的fetch api让他表现出差异
然后我们可以先开始验证前两条猜测的正确性
1.我们可以很简单发现第一条显然不成立
如果我们修改了原生fetch api,我们打印fetch的值得时候,就会显示我们修改之后的值。所以问题不是因为修改了fetch api 引起的。
- 第二条也很好验证,在这里就不验证了。这个可能性比较小
那么我们可以得到肯定有其他什么东西影响了fetch api
怀着疑惑,我们看了一眼html
<!DOCTYPE html>
- 在一大段代码中发现了一个很特殊的meta标签
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"
- 在一大段代码中发现了一个很特殊的meta标签
我们可以尝试注释一下,发现原来的问题没有了,终于找到罪魁祸首了。
然后我们就可以找到这是为什么了,具体原因是Upgrade-Insecure-Requests 是一个请求首部,用来向服务器端发送信号,表示客户端优先选择加密及带有身份验证的响应,并且它可以成功处理 upgrade-insecure-requests CSP 指令。
上传进度的获取
- 你如果要用fetch实现上传进度,搜一下会发现目前没解决方案
thanks
还没有评论,来说两句吧...