javascript CORS onerror处理程序

时间:2013-06-19 20:52:15

标签: google-chrome firefox cors onerror

背景

  • 几年前,onerror处理程序和跨源脚本标记more info on that存在问题。

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

  • 知道这是从CDNed脚本检测客户端错误的问题,他们稍微放松了这些约束(firefoxwebkit

实际问题

我在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行处理“脚本错误”,就像票证中描述的那样。

请注意我:

  • 设置crossdomain属性。

  • 在请求中查看“Origin”标题

  • 将Access-Control-Allow-Origin标头设置为“*”并在开发网络工具上查看。

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

1 个答案:

答案 0 :(得分:3)

Firefox 20和Chrome Works for me中的

supports cross-origin error reporting as of version 30

您可以看到浏览器确实发送了Origin:标头,因为<script>标记具有crossorigin属性,并且正确报告错误,因为服务器以{{1响应}}