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

Tay*_*tay 10 javascript ajax jsonp cors

上下文:引用Mozilla文档:

对于未通过标准CORS检查的脚本,普通脚本标记会将最少的信息传递给window.onerror.为了允许对使用单独域进行静态媒体的站点进行错误记录,多个浏览器使用与标准img crossorigin属性相同的定义为脚本启用了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);
Run Code Online (Sandbox Code Playgroud)

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

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

Tay*_*tay 46

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

这个:

script.crossorigin = 'anonymous';
Run Code Online (Sandbox Code Playgroud)

应该这样:

script.crossOrigin = 'anonymous';
Run Code Online (Sandbox Code Playgroud)

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

令人尴尬,但我决定永久化我的错误,而不是删除问题,以防其他人做同一个.

  • 同时也是`script.setAttribute('crossorigin','anonymous');`和`script.setAttribute('crossOrigin','anonymous');`的作品 (4认同)