【发布时间】:2016-05-23 08:54:21
【问题描述】:
我的网站上的一些外部脚本存在一些奇怪的问题。我终于把它归结为这个sn-p。
<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js" onload="console.log('conversion')"></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" onload="console.log('jquery')"></script>
在 firefox 中加载它只加载第二个脚本,而在 chrome 中加载。这是在带有最新浏览器的 OSX 上。
现在,如果我将 crossorigin 属性添加到两个脚本,那么它会停止在 chrome 中工作并出现此错误 Script from origin 'http://www.googleadservices.com' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.example.com:3000' is therefore not allowed access.
现在的脚本是
<script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js" onload="console.log('12123')" crossorigin async></script>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" onload="console.log('123')" async crossorigin></script>
我对这种行为上的差异感到震惊。这是因为 Firefox 比 Chrome 更严格吗?这是我在某处设置的设置吗?或者这是 Firefox/Chrome 的错误?
另外,我是否应该与供应商联系,让他们为 CORS 设置 js?让我印象深刻的是 google 失败了,但我还有另一个资源中断。
MDN 声称 script 标签不受同源策略的限制。
【问题讨论】:
-
尝试交换它们(首先是 jquery)
-
@ericosg 这是一个人为的例子,我的代码中没有这两行,我相信我的代码只使用第一行作为外部资源。在我发现FF和chrome之间的差异后,我从堆栈溢出源代码中找到了第二个:P
标签: html google-chrome firefox cors script-tag