内容安全策略通配符似乎被忽略

Content Security Policy wildcard seems to be ignored

为了提供一些上下文,这是一个 Electron 应用程序,使用 file://

加载 index.html

内容安全策略似乎正在收缩:

Refused to connect to 'https://o944978.ingest.sentry.io/api/5893671/envelope/?sentry_key=0a6134a5d89d40c4954c6144b0e63c64&sentry_version=7' because it violates the following Content Security Policy directive: "default-src 'unsafe-inline' 'self' 'unsafe-eval' data: *.sentry.io *.cloudfront.net". Note that 'connect-src' was not explicitly set, so 'default-src' is used as a fallback.

URL 与通配符 *.sentry.io 明显匹配,还是我遗漏了什么?

我要在这里回答自己:你不能。

2 个选项是:禁用网络安全或启动静态网络服务器。

如果没有看到您的实现很难知道,但这里有一些建议:

  1. 首先在CSP中仅使用*.sentry.io进行测试;添加出现在错误中的域。这个想法是提出使其工作的最小 CSP。
  2. 我的 CSP 在列表末尾有“数据:”。我不记得为什么,但我认为是有原因的...
  3. 确保用分号“;”结束每个列表

(回答为 post 因为我没有足够的声誉来发表评论)

*.sentry.io 来源是 recomended by docs.sentry.io 文档,即使将它放在 default-src 指令而不是 connect-src 指令中,它也绝对应该有效。 CSP 支持通配符指定子域。

CSP 可以阻止允许的来源的唯一原因是 NoScript/uBlock 等浏览器插件的存在。

尝试提供帮助的建议:

您能否也尝试 明确设置 connect-src

connect-src sentry.io https://*.sentry.io *.sentry.io;

(可能还有其他需要的主机)

你还收到这个错误吗?