javascript CORS onerror处理程序

Pab*_*dez 5 firefox google-chrome onerror cors

背景

  • 几年前,onerror处理程序和交叉原始脚本标签存在问题,有关此问题的更多信息.

  • 主流浏览器解决了这个问题

  • 知道这是从CDNed脚本检测客户端错误的问题,他们有点放松了这些约束(firefox,webkit)

实际问题

我在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>
Run Code Online (Sandbox Code Playgroud)

脚本siteA执行此操作:

var foo; foo.bar;
Run Code Online (Sandbox Code Playgroud)

显然,因为bar未定义,所以会抛出.

不幸的是,我仍然在第0行处理"脚本错误",如门票中所述.

请注意,我是:

  • 设置crossdomain属性.

  • 在请求中查看"Origin"标头

  • 将Access-Control-Allow-Origin标头设置为"*"并在开发Web工具上查看它.

我在firefox和chrome上都尝试了它,它不起作用.任何人都知道为什么?

jos*_*736 3

在 Firefox 20 中适用,Chrome从版本 30 开始支持跨域错误报告

您可以看到,浏览器确实发送了Origin:标头,因为<script>标记具有crossorigin属性,并且错误被正确报告,因为服务器以Access-Control-Allow-Origin: *.