如何使工作 Chrome 扩展程序的未捕获异常处理程序(由于 CORS 保护而不起作用)

How to make work Chrome extension's uncaught exceptions handler (which doesn't work because of CORS protection)

本文关键字:由于 异常处理程序 CORS 保护 不起作用 Chrome 工作 何使 扩展 程序      更新时间:2023-09-26

我在Chrome扩展程序的内容脚本JS文件之一中设置了未捕获的异常处理程序window.error = function(message, ...) {...}处理程序。目的是捕获扩展(内容脚本Javascript文件)中的所有此类错误,并将其报告给开发人员。但是,我总是收到消息"脚本错误"(发生在第 1 行),而不是真正的错误消息和堆栈跟踪。如何获得真正的错误和堆栈跟踪?

这是我在那一刻发现的。这是因为 CORS 保护,如果发生错误的脚本与加载脚本的文档来自同一来源,则默认情况下会清理错误的内容。Chrome 自版本 30 起支持绕过此保护("如果脚本带有适当的'访问控制-允许源'标头,授予加载文档对脚本内容的访问权限")。但是,如果内容脚本不是由 HTTP 提供,而是在扩展的清单中指定,我该如何应用该绕过?出于同样的原因,我不能使用 <script> 的跨源属性。

我也怀疑可以通过内容安全警察(content_security_policy清单字段)来完成,但我还不能。

意识到可以通过阅读铬来源找到答案,但我希望有人会告诉我,我不需要阅读它们。

除了等待修复 http://crbug.com/225513 之外,没有办法做到这一点