Javascript 如何查看远程脚本被阻止时返回的内容
我在我的webapp(//ajax.googleapis.com/ajax/libs/jQuery/1.8.3/jQuery.min.js)中使用Google托管的jQuery作为错误诊断的一部分。我有一个window.onerror处理程序,它可以捕获本地未捕获的任何错误,并让服务器知道这些错误 到目前为止还不错,但是。。。有时我会出现如下错误:Javascript 如何查看远程脚本被阻止时返回的内容,javascript,jquery,browser,cdn,google-cdn,Javascript,Jquery,Browser,Cdn,Google Cdn,我在我的webapp(//ajax.googleapis.com/ajax/libs/jQuery/1.8.3/jQuery.min.js)中使用Google托管的jQuery作为错误诊断的一部分。我有一个window.onerror处理程序,它可以捕获本地未捕获的任何错误,并让服务器知道这些错误 到目前为止还不错,但是。。。有时我会出现如下错误: “脚本错误”,“加载脚本时出错”,“意外标记根本无法获取标记引用的任何文件的内容。这是有充分理由的:这样做将允许您绕过XHR的同源策略 考虑: &l
“脚本错误”,“加载脚本时出错”,“意外标记根本无法获取
标记引用的任何文件的内容。这是有充分理由的:这样做将允许您绕过XHR的同源策略
考虑:
<script src="https://www.example.com/private/api/getAuthToken" id="s"></script>
这显然很糟糕。因此,你永远不允许阅读
标签带来的内容
由于最近引入了一个跨源脚本中的错误不会向页面的onerror
处理程序报告任何有用的信息,您的特定情况变得复杂。(本质上,这样做是为了修补一个信息披露安全漏洞,该漏洞允许恶意网站推断您是否登录到一些知名网站,以及其他内容。)
这意味着您无法从承载CDN的脚本中获得有关错误的有用信息,因此允许CDN(或其他非同一来源)服务器选择使用,以允许将完整错误详细信息传递给onerror
处理程序
我们(Facebook)需要一种机制来禁用中实现的窗口。onerror
静音行为。我们的静态脚本资源位于与主站点不同的域下的CDN上。由于这些域不同,我们与阻止我们收集有关浏览器错误的有用信息的x域逻辑发生冲突
这一“功能”已经被广泛应用于野外(Firefox和Webkit浏览器),以至于我们在生产中看到的大多数未捕获的异常现在都没有可操作的信息
(最初用于
)允许您指定应使用CORS规则加载资源
请注意,请求中存在Origin
头(表示CORS请求),响应中没有Access Control Allow Origin
头。因此,即使您放置crossorigin
属性,CORS检查也将失败,脚本将收到删除的错误详细信息
谷歌CDN服务器上有一个启用CORS的方法,我不会屏息以待
tldr:如果你想要有意义的错误消息,你必须自己在同一个来源上托管所有JavaScript。这是我的想法。我会看看是否可以直接与受影响的用户进行调查。谢谢。
var stolenAuthToken = $('#s').text();
<script src="http://example.com/xdomainrequest" crossorigin="anonymous"></script>