Javascript 是否仍然可以从跨源脚本捕获沙盒未捕获/不安全的错误消息

Javascript 是否仍然可以从跨源脚本捕获沙盒未捕获/不安全的错误消息,javascript,sandbox,onerror,Javascript,Sandbox,Onerror,添加on error事件侦听器时,通常会收到一个ErrorEvent对象,其中包含有关错误消息的详细信息(消息、行、列等);但是,当跨源脚本抛出错误时,您得到的只是“script error.”消息。据我所知,这是出于安全考虑 由于这个限制,我遇到了一些问题。我在IFrame元素中运行了跨源脚本(不是我的脚本,它们可能来自任何地方,我不控制它们,这里完全是随机的),我在其中添加了一个on-error事件侦听器和“sandbox”属性 我的目标是报告顶级页面上发生的沙箱违规行为。例如,如果沙盒不允

添加on error事件侦听器时,通常会收到一个ErrorEvent对象,其中包含有关错误消息的详细信息(消息、行、列等);但是,当跨源脚本抛出错误时,您得到的只是“script error.”消息。据我所知,这是出于安全考虑

由于这个限制,我遇到了一些问题。我在IFrame元素中运行了跨源脚本(不是我的脚本,它们可能来自任何地方,我不控制它们,这里完全是随机的),我在其中添加了一个on-error事件侦听器和“sandbox”属性

我的目标是报告顶级页面上发生的沙箱违规行为。例如,如果沙盒不允许弹出窗口。在控制台窗口中会显示一条错误消息,内容类似于“沙盒环境中不允许使用POP”。OneError会识别错误,但当您检查消息时,它总是显示“脚本错误”

是否有其他方法可以捕获这些未捕获/不安全的错误消息


我的目标是解析这些消息,以查看哪些沙箱冲突被抛出以进行日志记录。此方法将不起作用,因为IFrame中的任何未捕获错误消息都将被转换为同一消息,这可能导致误报。例如,有人确实抛出了新的错误('test'),现在我无法判断这是沙盒错误还是脚本错误。

如果Javascript错误消息是“script Error.”,则无法通过Javascript提取实际的错误消息。虽然用户可以检查其浏览器控制台以查看错误详细信息,但出于安全原因,跨源错误详细信息不会以任何方式暴露给Javascript

为了缓解这种情况,如果可能的话,建议用户使用没有CORS限制的网站上的库。承载库的站点需要同时具有这两个属性

以便捕获该站点托管的脚本中抛出的错误。例如:

<script src="https://cdn.jsdelivr.net/npm/babel-standalone@6.10.3/babel.min.js"></script>

因为JSDeliver具有这两个标题,所以抛出的错误将是可见的。(请原谅堆栈代码段攻击,但它说明了问题:)

-->
无效语法


如果Javascript错误消息为“Script error.”,则无法通过Javascript提取实际的错误消息。虽然用户可以检查其浏览器控制台以查看错误详细信息,但出于安全原因,跨源错误详细信息不会以任何方式暴露给Javascript

为了缓解这种情况,如果可能的话,建议用户使用没有CORS限制的网站上的库。承载库的站点需要同时具有这两个属性

以便捕获该站点托管的脚本中抛出的错误。例如:

<script src="https://cdn.jsdelivr.net/npm/babel-standalone@6.10.3/babel.min.js"></script>

因为JSDeliver具有这两个标题,所以抛出的错误将是可见的。(请原谅堆栈代码段攻击,但它说明了问题:)

-->
无效语法

我想没有办法了。谢谢!我想没有办法了!