我目前正在尝试开发一个Chrome扩展程序,它应该显示来自不同Jenkins服务器的数据。用户正在输入jenkins服务器的URL。
基本上我需要的是能够访问任何类型的jenkins网址。
我的问题是Chrome的Content Security Policy 只允许您访问您在manifest.json中注册的域名,如下所示:
"content_security_policy": "script-src 'self' http://localhost:8080/; object-src 'self'"
。
但由于不同的用户会输入不同的网址,我需要能够动态更改此政策,而且我真的不知道如何做到这一点。
答案 0 :(得分:0)
安装扩展程序后,您将无法动态更改清单。根据Google https://developer.chrome.com/extensions/contentSecurityPolicy#relaxing-remote-script:
不允许使用通用通配符,例如https:,https:// *和https:// .com;允许使用子域通配符,例如https:// .example.com。
如果您可以确保CI计算机都在同一个域上,那么它可以正常工作。
答案 1 :(得分:0)
您似乎对将请求发送到随机域所需的内容存在误解。
CSP指令script-src
指示您可以<{1}}专门从执行代码的位置。实际上,这是你不能列入白名单的。
要发送GET / POST跨网站请求,您需要host permission,而不是CSP修改。
有两种可能的方法:
<script src="https://some.domain/script.js">
或"*://*/*"
。这将允许您以安装时警告“可以读取和修改所有网站上的数据”使用optional permissions API。这样,您可以避免安装时警告并在配置扩展时提示提升权限。如果不经常进行此配置,这将是有意义的。
额外注意事项:自2016-10-04起,{@ 1}} API未在Firefox WebExtensions / Edge Extensions中实施,因此如果需要考虑可移植性,那么现在最好避免使用新项目。