<script crossorigin =“”>,为什么“被CORS阻止”错误?

时间:2017-02-03 05:06:40

标签: javascript web cross-domain

最近,我在script元素中添加了crossorigin属性来解决mutted异常问题。但是我发现了一个奇怪的问题,如果响应头没有设置正确的access-control-allow-origin,那么我会得到一个交叉原点错误而脚本将不会执行。

&#xA;&#xA;

这里是代码:

&#xA;&#xA;
 &lt; script src ='https://blog.sentry.io/js/script.js'rossorigin> &lt; / script&gt;&#xA;  
&#xA;&#xA;

这是错误消息:

&#xA;&#xA;
& #xA;

源自“ https://blog.sentry.io ”的脚本已被阻止来自&#xA;通过跨源资源共享策略加载:否&#xA; 'access-Control-Allow-Origin'标题出现在请求的&#xA;资源。因此不允许原点'null'访问。

&#xA;
&#xA;&#xA;

这是请求标题:

&#xA;&#xA ;
  GET /js/script.js HTTP / 1.1&#xA;主机:blog.sentry.io&#xA;连接:keep-alive&#xA; Pragma:no-cache&#xA; Cache-Control :no-cache&#xA;接受:* / *&#xA; Origin:null&#xA; User-Agent:Mozilla / 5.0(iPhone; CPU iPhone OS 8_0,如Mac OS X)AppleWebKit / 600.1.3(KHTML,like Gecko)Version / 8.0 Mobile / 12A4345d Safari / 600.1.4&#xA; Accept-Encoding:gzip,deflate,sdch&#xA; Accept-Language:zh-CN,zh; q = 0.8,en; q = 0.6,ja; q = 0.4&#xA; Cookie:ajs_anonymous_id =%22d6975e43-f4d3-4d98-a74e-5b319594902a%22; ajs_user_id = NULL; ajs_group_id = NULL; _ga = GA1.2.141680712.1484118184; __ar_v4 = HBLTKULO45CAHNTTTEO3IG%3A20170110%3A2%7C7M3QZV2OWJGMBAGSKP2TG5%3A20170110%3A2%7CMLWCNCFTMJGD7GPDGE6RVT%3A20170110%3A2&#xA;  
&#xA;&#xA;

这是响应头:

&#xA;&#xA;
  HTTP / 1.1 200 OK&#xA;服务器:nginx&#xA;日期:星期四,2017年2月2日10:50:40 GMT&#xA;内容类型:应用程序/ JavaScript的; charset = utf-8&#xA; Content-Length:35758&#xA; Connection:close&#xA; Last-Modified:Thu,26 Jan 2017 18:37:33 GMT&#xA; Expires:Tue,31 Jan 2017 05:01 :26 GMT&#xA; Cache-Control:max-age = 600&#xA;内容编码:gzip&#xA; Accept-Ranges:bytes&#xA; X-Timer:S1486032640.581431,VS0,VE0&#xA; Vary: Accept-Encoding&#xA; Strict-Transport-Security:max-age = 31536000&#xA; X-Frame-Options:SAMEORIGIN&#xA;  
&#xA;&#xA;

i尝试在whatwg规范中找到答案,规范说:

&#xA;&#xA;
&#xA;

crossorigin属性是CORS设置属性。对于经典脚本,它控制是否在从其他源获取脚本时公开错误信息。对于模块脚本,它控制用于跨源请求的凭据模式。

&#xA; &#XA;

与经典脚本不同,模块脚本需要使用CORS协议进行跨源提取。

&#xA;
&#xA;&#xA;

所以我认为是crossorigin属性应该只控制错误信息,而不是脚本的执行。

&#xA;&#xA;

导致此问题的原因是什么?我现在该怎么办才能解决这个问题?

&#xA;

0 个答案:

没有答案