javascript CORS onerror 处理程序
Posted
技术标签:
【中文标题】javascript CORS onerror 处理程序【英文标题】:javascript CORS onerror handler 【发布时间】:2013-06-16 13:38:46 【问题描述】:背景
几年前,onerror
处理程序和跨源脚本标签 more info on that 存在问题。
主要浏览器修复了该问题。
知道这是从 CDN 脚本中检测客户端错误的问题,他们在一定程度上放松了这些限制(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>
siteA
上的脚本是这样做的:
var foo; foo.bar;
显然这会抛出,因为 bar 是未定义的。
不幸的是,我仍然在第 0 行遇到“脚本错误”,如票证中所述。
请注意,我是:
设置跨域属性。
查看请求中的“Origin”标头
将 Access-Control-Allow-Origin 标头设置为“*”并在开发 Web 工具上查看。
我在firefox和chrome都试过了,都不行。有人知道为什么吗?
【问题讨论】:
Chrome 实际上是doesn't support cross-origin error reporting yet。另外,more background on the issue here. Pablo,这应该可以在 Firefox 中使用......我假设您使用的是最新版本,对吧? Firefox 13 中添加了对此的支持。 【参考方案1】:Works for me 在 Firefox 20 和 Chrome 中supports cross-origin error reporting as of version 30。
您可以看到浏览器确实发送了Origin:
标头,因为<script>
标记具有crossorigin
属性,并且由于服务器以Access-Control-Allow-Origin: *
响应,因此正确报告了错误。
【讨论】:
以上是关于javascript CORS onerror 处理程序的主要内容,如果未能解决你的问题,请参考以下文章
javascript学习异常处理 try-catch 和 onerror
JavaScript-onerror事件:图片加载失败后不显示
JavaScript img.src onerror 事件 - 获取错误原因
通道 API 通道在没有 onclose 或 onerror 调用的情况下断开连接。 JavaScript 控制台包含对talkgadget.google.com 的HTTP 调用失败的日志