我正在使用一个检测Javascript错误的脚本并将其报告给我的后端。但是我收到了神秘的“脚本错误”消息,这对调试没有多大帮助。
根据Cryptic "Script Error." reported in Javascript in Chrome and Firefox,原因是因为投放错误的脚本来自与我的网站不同的来源。
由于我正在使用CDN,因此我的所有脚本都可以从另一个域有效地提供。有没有办法在使用CDN时获得更多有用的错误消息?
此外,所有内容都通过SSL提供,因此我希望保留此功能。
答案 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一直是我解决这类问题的首选武器。其他人只是合法的。