内容安全策略不从本地主机加载文件

Content Security policy not loading files from localhost

本文关键字:主机 加载 文件 安全策略      更新时间:2023-09-26

我正在尝试制作一个 chrome 应用程序,并希望使用 livereload 以便在进行更改时自动更新我的应用程序。但我收到以下消息——

错误信息:

Refused to load the script 'http://localhost:35729/livereload.js' because it violates the following Content Security Policy directive: "default-src 'self' chrome-extension-resource:". Note that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.

我在 manifest.json 文件中添加了以下部分,但随后 chrome 开始发出警告。

"content_security_policy": "script-src 'self' 'http://127.0.0.1:1337/livereload.js'; object-src 'self'"

警告-

尝试安装此扩展时出现以下警告: "content_security_policy"仅适用于扩展和旧版 打包应用,这是一个打包的应用。

更新:

当我使用后台脚本创建窗口时,会出现此问题。 即当我的清单文件中有这个时

"background": {
    "scripts": ["backgound.js"]
},
"content_security_policy": "script-src 'self' http://localhost:1337/livereload.js 'unsafe-eval'; object-src 'self'"

如果我不使用后台脚本,而是使用这个 -

"app": {
    "launch": {
        "local_path": "window.html"
    }

然后一切正常。有人可以解释为什么会发生这种情况吗?

你的问题是什么?错误消息不言自明。

您的代码不能违反适用于 Chrome 应用的默认云解决方案提供商。您是否研究过内容安全策略并使您的应用程序合规?您是否查看过任何代码示例以获取要执行的操作的示例?

第一个问题是您正在尝试加载和执行外部内容。CSP 禁止这样做,即使没有这样做,如果你这样做,你的应用也无法脱机运行。尝试将脚本作为应用的一部分包含在内,而不是在外部(本地主机)服务器上。然后,再次阅读CSP并修复任何剩余问题,以便错误消息消失。