0

我正在开发一个 Firefox 插件。它是 Gmail 的内容脚本。在内容脚本上,我向在 localhost 上运行的服务器发出请求。在 package.json 文件中,我允许来自 localhost的跨域内容,如下所示:

 "permissions": {
      "cross-domain-content": ["http://127.0.0.1:5000/"]
  },

然而,每当我运行我的加载项时,我都会收到“阻止加载混合活动内容”错误。我知道从 Firefox 23 开始,混合内容阻止已启用。有没有办法绕过加载项?明显的解决方案是使用 https 在 localhost 上运行我的服务器。但我希望该服务器易于安装和用户运行,所以我想避免该选项,服务器也只能在 localhost 上运行。我是即使 Chrome 也阻止加载混合的活动内容,Chrome 版本的加载项也不会出现此问题。

4

1 回答 1

0

指定该权限将导致Sandboxworker在 SDK 内部术语中,content script在文档中)简单地获取一个新的 XMLHttpRequest 构造函数,该构造函数具有多个主体(或“来源”,如果您愿意)。这只会改变如何评估同源策略,但不会改变一般安全性和特别是混合内容策略的实施方式。XHR也就是说:正如您所注意到的,您仍然无法对 http 执行 https 。

您无法在内容脚本中使用任何解决方法。但是,您可以向主脚本发送消息以执行请求并将结果(再次通过消息传递)传递回内容脚本。

提交一个错误。至少应记录此限制。

就个人而言,我不赞成取消它。混合内容是一个安全问题,除了localhost可能之外,因此任何绕过它的代码都应该在代码审查期间很容易检测到,就像我提出的建议的消息来回工作一样(这样的东西在代码审查期间引起了人们的注意)。或者也许只是举起它localhost?但这个决定取决于 Mozilla 平台、附加 SDK 和安全团队。

于 2013-09-06T16:20:30.907 回答