我有一个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中得到了更严格的执行,或者其他问题?
参考
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/img-src
- https://developer.chrome.com/docs/extensions/mv3/intro/
作品:
<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