Chrome 扩展和 Jenkins URL 的

Chrome Extension and Jenkins URL's

我目前正在尝试开发一个 chrome 扩展,它应该显示来自不同 Jenkins 服务器的数据。用户正在向 jenkins 服务器输入 url。

所以基本上我需要的是能够访问任何类型的 jenkins url。

我的问题是 Chrome 的 Content Security Policy 只允许您访问您在 manifest.json 中注册的域,如下所示:

"content_security_policy": "script-src 'self' http://localhost:8080/; object-src 'self'".

但由于不同的用户将输入不同的 url,我需要能够动态更改此策略,但我真的不知道该怎么做。

安装扩展后,您将无法动态更改清单。每 Google https://developer.chrome.com/extensions/contentSecurityPolicy#relaxing-remote-script :

Generic wildcards such as https:, https://* and https://.com are not allowed; subdomain wildcards such as https://.example.com are allowed.

如果您可以确保 CI 台机器都在同一个域中,那么它就可以工作。

您似乎对向随机域发送请求需要什么有误解。

CSP 指令 script-src 指示您可以 执行代码的位置,特别是 <script src="https://some.domain/script.js">。那确实是您不能列入白名单的东西。

要发送 GET/POST 跨站点请求,您需要 host permission,而不是 CSP 修改。

有两种可能的方法:

  • 给自己广泛的权限,例如"*://*/*""<all_urls>"。这将允许您以安装时警告为代价查询任何内容 "can read and modify data on all websites".
  • 使用optional permissions API。这样,您可以在配置扩展时避免安装时警告和提升权限提示。如果不需要经常进行此配置,这将很有意义。

    额外注意:截至 2016 年 10 月 4 日,permissions API 未在 Firefox WebExtensions / Edge Extensions 中实现,因此如果考虑到可移植性,最好避免用于新项目现在。