为什么Chrome不会使用允许localhost的内容安全策略加载扩展?

时间:2012-09-28 18:48:24

标签: google-chrome-extension content-security-policy

我正在使用Chrome扩展程序,并希望从localhost加载脚本以进行开发。所以我更新了清单文件以包含以下行:

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

根据Content Security Policy上的文档,在没有localhost的情况下使用127.0.0.1https完全没问题。

但是,当我尝试从chrome://chrome/extensions/加载扩展程序时收到以下(嘲讽)错误消息:

  

无法从'/ Users / Tim / Desktop / temp / test'加载扩展程序。 'content_security_policy'的值无效:必须指定'script-src'和'object-src'指令(显式或隐式地通过'default-src'),并且两者都必须仅将安全资源列入白名单。您可以包含以下任何来源:“'self'”,“'unsafe-eval'”,“http://127.0.0.1”,“http:// localhost”或任何“https://”或“chrome-extension://”来源。有关详细信息,请参阅http://developer.chrome.com/extensions/contentSecurityPolicy.html

要确认问题,您可以使用以下manifest.json文件创建一个空目录:

{
  "name": "Example extension",
  "description": "Trying to demonstrate a bug in Chrome",
  "version": "0.1",
  "homepage_url": "http://example.com",
  "content_security_policy": "script-src 'self' http://localhost; object-src 'self'",

  "manifest_version": 2
}

并将目录加载为解压缩的扩展名。你应该得到错误。如果您删除http://localhost或将其更改为https://localhost,则会正常加载。

我错过了什么吗?

(注意:我使用的是Chrome 22.0.1229.79)

谢谢!

1 个答案:

答案 0 :(得分:3)

Chromium revision 151470启用了将localhost添加到CSP值的功能,该功能位于Chrome 23中(目前位于开发频道,很快就会进入测试频道)。