使用cdn避免使用神秘的javascript“脚本错误”

时间:2012-07-28 20:29:57

标签: javascript cdn same-origin-policy

我正在使用一个检测Javascript错误的脚本并将其报告给我的后端。但是我收到了神秘的“脚本错误”消息,这对调试没有多大帮助。

根据Cryptic "Script Error." reported in Javascript in Chrome and Firefox,原因是因为投放错误的脚本来自与我的网站不同的来源。

由于我正在使用CDN,因此我的所有脚本都可以从另一个域有效地提供。有没有办法在使用CDN时获得更多有用的错误消息?

此外,所有内容都通过SSL提供,因此我希望保留此功能。

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题:我的脚本由子域服务,并且属于同一原点限制。但是,我通过以下方式解决了这个问题:

1)添加如下所示的每个脚本标记:

<script type="text/javascript" src="http://subdomain.mydomain.tld" crossorigin="*.mydomain.tld" />

2)通过在每个vhost中添加以下内容来修改apache httpd.conf(你必须使用mod_headers):

<IfModule mod_headers.c>
Header add Access-Control-Allow-Origin "*.mydomain.tld"
</IfModule>

在我的一台服务器上,我无法通过替换

来实现这一功能
*.mydomain.tld

通过

*

请注意可能允许*对网络钓鱼扩展信息的漏洞。关于CORS的文档,同源,img&amp;字体,cdn是可用的,但是关于脚本标签的交叉原始细节却很少。

希望这会有所帮助......

答案 1 :(得分:0)

尝试在jQuery.ajax中使用jsonp作为dataType属性。远程服务器还需要支持jsonp。它将绕过浏览器安全防范XSS。

或者,您可以使用IFrame并在每个窗口中使用jQuery,但使用HTML5 postMessage在两个不同域上的窗口之间来回通信。

或者,如果您控制两台服务器,则可以设置same origin的标头。

Jsonp一直是我解决这类问题的首选武器。其他人只是合法的。