【问题标题】:javascript CORS onerror handlerjavascript CORS onerror 处理程序
【发布时间】:2013-06-16 13:38:46
【问题描述】:

背景

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

  • 主要浏览器修复了该问题。

  • 知道这是从 CDN 脚本中检测客户端错误的问题,他们在一定程度上放松了这些限制(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 行遇到“脚本错误”,如票证中所述。

请注意,我是:

  • 设置跨域属性。

  • 查看请求中的“Origin”标头

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

我在firefox和chrome都试过了,都不行。有人知道为什么吗?

【问题讨论】:

标签: google-chrome firefox cors onerror


【解决方案1】:

Works for me 在 Firefox 20 和 Chrome 中supports cross-origin error reporting as of version 30

您可以看到浏览器确实发送了Origin: 标头,因为&lt;script&gt; 标记具有crossorigin 属性,并且由于服务器以Access-Control-Allow-Origin: * 响应,因此正确报告了错误。

【讨论】:

    猜你喜欢
    • 2010-11-03
    • 1970-01-01
    • 2014-02-23
    • 2011-01-03
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 2015-02-28
    相关资源
    最近更新 更多