Safari 拒绝加载,<source>因为它没有出现在内容安全策略的 img-src 指令中,但在 Chrome 中工作



我有一个Safari扩展,它从域https://images.unsplash.com的Unsplash加载图像。我最近迁移到manifestv3,并在manifest.json中使用了以下CSP:

"content_security_policy": {
"extension_pages": "img-src https://images.unsplash.com data:; script-src 'self'; object-src 'self';"
},

这允许图像在Chrome上正确加载,包括来自images.unsplash.com的初始请求和通过data:方案加载图像的预加载机制。

在Safari上,我得到一个错误:

Refused to load https://images.unsplash.com/photo-1587830290334-020efdcbc345?crop=entropy&cs=tinysrgb&fit=max&fm=webp&ixid=MnwxNzkyODZ8MHwxfGFsbHx8fHx8fHx8fDE2MTczMjkzMDc&ixlib=rb-1.2.1&q=80&w=400 because it does not appear in the img-src directive of the Content Security Policy.

即使我在CSP中使用了确切的URL,我也会得到这个。它在其他浏览器中似乎可以正常工作,图像加载成功。我的CSP定义在技术上是否不正确,并且在Safari中得到了更严格的执行,或者其他问题?

参考

  1. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/img-src
  2. https://developer.chrome.com/docs/extensions/mv3/intro/
正如@wOxxOm所指出的,确实存在一个bug。如果您改为通过元标记设置CSP,它将按预期运行。因此,当向App Store提交构建时,从manifest.json中删除CSP密钥,Safari将通过元标记依赖CSP集。

作品:

<meta
http-equiv="Content-Security-Policy"
content="img-src https://images.unsplash.com data:; script-src 'self'; object-src 'self';"
/>

Webkit中的跟踪错误:https://bugs.webkit.org/show_bug.cgi?id=243349

相关内容

  • 没有找到相关文章

最新更新