错误:内容安全策略:页面设置阻止了资源的加载

5

我一直在尝试将我用jQuery/HTML写的一个简单程序移植到Firefox WebExtension中以便于发布。我遇到了如下错误:

Content Security Policy: The page’s settings blocked the loading of a resource at https://code.jquery.com/jquery-1.12.4.js (“script-src moz-extension://ef8f1295-1912-4912-ab2e-121053b6781a”).

我确定我只是没有正确编写 manifest.json 文件,但我真的不知道哪里错了:

{
  "description": "Makes tasks from different underwriters uniform",
  "manifest_version": 2,
  "name": "Task Creator",
  "version": ".5",
  "permissions": [
    "http://*/*", "tabs", "https://*/*"
  ],

  "icons": {
    "48": "icons/page-48.png"
  },
  "web_accessible_resources": [
    "style/popUpStyle.css",
    "script/popUpTask.js",
    "script/logicTaskFiller.js",
    "js/autosize.js",
    "style/https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css",
    "js/https://code.jquery.com/jquery-1.12.4.js",
    "js/https://code.jquery.com/ui/1.12.1/jquery-ui.js"
  ],

  "background": {
    "scripts": ["background.js"]
  },

  "browser_action": {
    "default_icon": "icons/page-32.png"
  }
}

1
js/https://code.jquery.com/jquery-1.12.4.js 是一个无效的文件路径。请使用 js/jquery-1.12.4.js 并确保该文件存在。 - wOxxOm
我能不能不从外部网站加载jquery? - Branden Ham
你可以手动完成,但无法通过manifest.json实现。 - wOxxOm
好知道,谢谢。我不能标记你的评论为答案,是吧。 - Branden Ham
2
我可以不从外部网站加载jquery吗?你可以。但是你应该这样做吗?有什么改进吗? - Xan
如何覆盖CSP:https://dev59.com/questions/QV4c5IYBdhLWcg3w-OU4 - AAAfarmclub
1个回答

5

默认情况下,扩展程序无法从互联网加载脚本或其他对象资源。您的扩展程序使用的所有CSS和JavaScript内容都应该是扩展程序包的一部分。

(这篇文档来自Chrome,但是完全相同的政策适用于Firefox WebExtensions.)

虽然可以在一定程度上放宽这些限制,但通常应该避免这样做--从远程服务器加载资源会使您的扩展程序在用户没有Internet访问权限或在他们受到严格防火墙限制时无法正常工作。此外addons.mozilla.org不接受执行远程托管Javascript的插件


正如所述,这是错误的,因为您可以放宽政策。 - Xan
2
@Xan,虽然你可能在技术上可以放宽政策,但如果你打算通过AMO(Firefox扩展的“正常”分发方式)托管WebExtension,那么你使用的任何JavaScript都应该包含在扩展程序包中。任何这样的公共库都应该与可下载的副本完全匹配。在审核过程中将检查它们是否匹配。如果你从外部资源加载JavaScript,则不太可能通过AMO的审核。 - Makyen
1
我并不反对。但原始陈述仍然是不正确的,现在已经被更正了。 - Xan
@Makyen 这也是一个很好的观点!我已经添加了一条注释。 - user149341

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接