如何添加" crossorigin"标记到动态加载的脚本?

时间:2015-03-06 14:42:22

标签: javascript ajax jsonp cors

背景:To quote the Mozilla documentation:

  

普通脚本标记会将最少的信息传递给window.onerror   对于未通过标准CORS检查的脚本。允许错误   记录为静态媒体使用单独域的站点,   几个浏览器为脚本启用了crossorigin属性   使用与标准img crossorigin属性相同的定义。

自从我们将javascript移动到CDN后,我们意识到我们的脚本正在遭遇此问题。我们在脚本标记中添加了crossorigin属性,这对于"硬编码"脚本标记,但我们动态加载了一些脚本,而且我无法弄清楚如何将crossorigin标记添加到这些脚本中。

在Chrome 40中: 如果我使用Javascript动态添加脚本标记,如下所示:

var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.charset = 'utf-8';
script.crossorigin = 'anonymous';
script.src = some_url_on_another_domain;
head.appendChild(script);

我希望将crossorigin标记添加到插入到我的文档中的脚本标记中。但是,当我检查Developer工具中的脚本标记时,显然不存在。 (我可以验证请求脚本时请求标头中没有设置origin标头。)

目前,我正在回归使用这些跨域脚本的ajax请求,因此有一些解决方法,但现在我很好奇是否可以在动态脚本标记上添加crossorigin标记。

1 个答案:

答案 0 :(得分:41)

好吧,我发现了我的问题。

此:

script.crossorigin = 'anonymous';

应该是这样的:

script.crossOrigin = 'anonymous';

注意资本" O"。该属性在HTML中没有大写,但在JS界面中大写。很高兴知道!

令人尴尬,但我已经决定永久化我的错误,而不是删除这个问题以防其他人制作相同的错误。