我正在编写一个Chrome扩展程序,该扩展程序在内容脚本中使用了<object>
,该脚本从中央服务器加载内容以显示给用户。在某些网站上,我尝试在data
上设置<object>
属性的尝试被阻止,出现以下错误:
Refused to load plugin data from 'https://redacted.com/?url=https%3A%2F%2Fwww.mozilla.org%2Fen-US%2Ffirefox%2F' because it violates the following Content Security Policy directive: "default-src 'self' *.mozilla.net *.mozilla.org *.mozilla.com". Note that 'object-src' was not explicitly set, so 'default-src' is used as a fallback.
我的扩展程序可以在stackoverflow.com上正常工作!请注意,有时是object-src 'self' blob:
。
从我的扩展程序试图加载的网站的响应标头中,很明显,这就是阻止我的扩展程序执行其功能的原因(stackoverflow.com中缺少这些标头,这就是它起作用的原因) :
content-security-policy: default-src 'self' *.mozilla.net *.mozilla.org *.mozilla.com; child-src www.googletagmanager.com www.google-analytics.com www.youtube-nocookie.com trackertest.org www.surveygizmo.com accounts.firefox.com accounts.firefox.com.cn www.youtube.com; script-src 'self' *.mozilla.net *.mozilla.org *.mozilla.com 'unsafe-inline' 'unsafe-eval' www.googletagmanager.com www.google-analytics.com tagmanager.google.com www.youtube.com s.ytimg.com; style-src 'self' *.mozilla.net *.mozilla.org *.mozilla.com 'unsafe-inline'; img-src 'self' *.mozilla.net *.mozilla.org *.mozilla.com data: mozilla.org www.googletagmanager.com www.google-analytics.com adservice.google.com adservice.google.de adservice.google.dk creativecommons.org ad.doubleclick.net; frame-src www.googletagmanager.com www.google-analytics.com www.youtube-nocookie.com trackertest.org www.surveygizmo.com accounts.firefox.com accounts.firefox.com.cn www.youtube.com; connect-src 'self' *.mozilla.net *.mozilla.org *.mozilla.com www.googletagmanager.com www.google-analytics.com https://accounts.firefox.com/ https://accounts.firefox.com.cn/
有没有解决的办法?是否可以使用Shadow DOM?我已经尝试将content_security_policy
添加到我的manifest.json
中,但这将永远无法正常工作,因为浏览器尊重其标题中父网站的响应。
谢谢。