使用package和webext构建webextension,什么是正确的内容安全策略



Parcel支持捆绑Web扩展:https://v2.parceljs.org/recipes/web-extension/

设置生成服务器并监视更改的命令是:parcel src/manifest.json --host localhost --target webext-dev。这将把一个web扩展捆绑到dist/文件夹中。

我想用web-ext run运行这个扩展。这是Mozilla的一个工具,它可以自动将网络扩展加载到Firefox中,并在更改时重新加载。在dist/文件夹中运行这个程序应该会成为一对很好的包裹。

但在实践中,捆绑的webextension并没有执行我的内容脚本。这是因为包裹从本地主机为他们提供服务。热模块更换需要标志--host localhost。但是webextension随后抱怨"page's settings blocked loading of a resource at ws://localhost:1234/ (“connect-src”)."

地块文档还演示了一个构建命令:parcel build src/manifest.json --target webext-prod。如果我从dist/webext-prod运行web文本,它就像一个魅力。地块构建命令的新运行会自动触发webextension的重新加载。但这对开发来说没有成效,因为地块建设耗时太长。我想使用它的开发设置。

如何正确配置Web扩展的内容安全策略以允许从localhost加载内容脚本?

到目前为止,我的manifest.json中的条目如下:

"content_security_policy": "connect-src 'self' 'localhost:';",
  1. 'localhost:'语法错误,没有单引号和尾随冒号":"应该使用。它只是像域名一样的特定主机名。

  2. localhost源代码涵盖http://localhosthttps://localhost(仅适用于http/https方案(,但仅具有标准端口。

  3. 'self'令牌仅涵盖CSP3浏览器中的ws://localhostwss://localhost主机源,并且仅具有标准端口。

由于您确实使用了非标准端口号,请尝试:

"content_security_policy": "connect-src 'self' ws://localhost:1234;"

相关内容

  • 没有找到相关文章

最新更新