背景
几年前,有一个问题onerror
处理程序和跨源脚本标签,更多相关信息 http://jeremiahgrossman.blogspot.com/2006/12/i-know-if-youre-logged-in-anywhere.html.
主流浏览器修复了该问题。
知道这是从 CDN 脚本检测客户端错误时出现的问题,他们在某种程度上放宽了这些限制(firefox https://bugzilla.mozilla.org/show_bug.cgi?id=696301, webkit https://bugs.webkit.org/show_bug.cgi?id=81438)
实际问题
我在 localhost 上托管一个简单的页面,并包含来自不同域的脚本(例如“sitea”),HTML 如下所示:
<html>
<head>
<script>window.onerror = function(e, f, g) { console.log('err',e,f,g) }</script>
</head>
<body><h2>test</h2>
<script src='http://siteA:8081/one.js' crossorigin='anonymous'></script>
</body>
</html>
脚本于siteA
做这个:
var foo; foo.bar;
显然这会抛出异常,因为 bar 未定义。
不幸的是,我仍然在第 0 行收到“脚本错误”,如票证中所述。
请注意,我是:
我在 chrome 和 firefox 都试过了,还是不行。有人知道为什么吗?
对我有用 http://jsfiddle.net/josh3736/vHmeb/在 Firefox 20 和 Chrome 中从版本 30 开始支持跨源错误报告 https://code.google.com/p/chromium/issues/detail?id=159566.
您可以看到浏览器确实发送了一个Origin:
标头因为<script>
标签有一个crossorigin
属性,并且错误被正确报告,因为服务器响应Access-Control-Allow-Origin: *
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)