[js]access-control-allow-headers 中的 intervention 与跨域的 js
我是没看懂,但感觉会在未来引起某种严重的问题。所以转帖一下,大概意思是说服务器最好支持 intervention 吧。唉,google 这几年真是给大家添了不少麻烦啊,基本上属于步子跨得太大扯着了蛋。
--------------------------------------------------------
https://segmentfault.com/a/1190000016807599
通过fetch方法获取跨域JS报错
javascript fetch service-worker cors
1.1k 次阅读 · 读完需要 5 分钟
一、背景
今天在serviceWork中通过fetch获取一个跨域的JS是报错了:
clipboard.png
难道该JS不支持跨域? 看下该js的rquest/response:
clipboard.png
打眼一看这个js支持跨域啊,但仔细看看发现请求头里有个非CORS安全头部:intervention,而响应头里也没有把intervention加入到access-control-allow-headers里。
二、是谁在请求头加的intervention?
正好这个头里有链接,点进入看看,原来是chrome自己加的。具体原因可以见参考1
三、解决方案
3.1 方案1
不使用document.write了呗,可以用其他动态添加JS的方法,如:
var s = document.createElement('script');
s.src = 'xxxxxxx';
var firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(s, firstScript);
3.2 方案2
在响应头里把intervention加入到access-control-allow-headers里。
参考
Intervening against document.write()
Intervention: Blocking the load of cross-origin, parser-blocking scripts inserted via document.write for users on 2G
博客报错 A Parser-blocking, cross-origin script, is invoked via document.write.