首页 文章

如何在Firefox附加组件上允许跨域内容脚本,而不会触发混合内容阻止错误

提问于
浏览
0

我正在开发一个Firefox附加组件 . 这是Gmail的content script . 在内容脚本上,我向在localhost上运行的服务器发出请求 . 在package.json文件中我从localhost这样allowed cross-domain content如下:

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

然而,每当我运行我的附加组件时,我都会收到“阻塞加载混合活动内容”错误 . 我知道自从Firefox 23以来,mixed content blocking has been enabled . 有没有办法绕过附加组件?明显的解决方案是运行我的服务器在localhost上使用https . 但我希望这个服务器易于安装并由用户运行,所以我想避免使用该选项,服务器也只能在localhost上运行 . 我没有遇到这个问题Chrome版本的插件,即使Chrome也阻止加载混合活动内容 .

1 回答

  • 0

    指定该权限将导致 Sandboxworker 在SDK内部而言, content script 在文档)简单地得到一个新的XMLHttpRequest的构造,有一个以上的委托人(或"origin",如果你喜欢) . 这只会改变如何评估同源策略,而不会改变一般安全性和特定混合内容策略的实现方式 . 那就是:你仍然无法对http XHR 进行https,正如你所注意到的那样 .

    您可以在内容脚本中使用无法解决的问题 . 但是,您可以向主脚本发送消息来执行request并将结果(通过消息传递再次)传递回内容脚本 .

    file a bug . 至少应该记录这种限制 .

    就个人而言,我不赞成解除它 . 混合内容是一个安全问题,除了 localhost 之外,所以绕过它的任何代码都应该在代码审查期间很容易检测到,比如我提出的建议的消息 - 背靠背工作(在代码审查期间引起注意的东西) . 或者也许只是举起 localhost ?但是,这个决定取决于mozilla平台,附加SDK和安全团队 .

相关问题