【问题标题】:Capturing errors in a third party cross domain script在第三方跨域脚本中捕获错误
【发布时间】:2021-08-08 22:59:51
【问题描述】:

我有一个脚本从第三方域 (3p.com) 加载到网页 (page.com) 中

目标是捕获 3p 脚本中出现的 errorunhandledrejection 并将其 ping 回服务器以进行日志记录。

虽然浏览器中有可用的事件处理程序,但似乎它们不允许从 MDN site 收集任何有意义的信息:

When an error occurs in a script, loaded from a different origin, the details of the error are not reported to prevent leaking information (see bug 363897).

有没有办法做到这一点?理想的解决方案是全局的,并与这些事件挂钩,然后允许仅过滤来自相关脚本的错误。但是,如果这会捕获所有可能的错误,那么如果将脚本执行包装到 try / catch 中也会很高兴。

【问题讨论】:

    标签: javascript web browser error-handling cross-domain


    【解决方案1】:

    一种选择是设置您的服务器,以便将对该第三方域的请求从您的服务器退回,以便您的客户能够以编程方式检查可能引发的错误。例如,而不是为您的客户提供服务

    <script src="https://3p.com/script.js"></script>
    

    服务

    <script src="https://yoursite.com/get3pscript"></script>
    

    您站点上的get3pscript 路由向https://3p.com/script.js 发出请求,然后将响应发送给客户端,确保MIME 类型正确。然后客户端将能够对脚本元素做任何想做的事情,而不会出现跨域问题。

    【讨论】:

    • 很抱歉,这一定是由于我的措辞,在这种情况下,我实际上是第 3 方脚本,所以无法做到这一点:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 2010-11-06
    • 2011-06-22
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 2021-04-20
    相关资源
    最近更新 更多