我正在开发一个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 回答
指定该权限将导致
Sandbox
(worker
在SDK内部而言,content script
在文档)简单地得到一个新的XMLHttpRequest的构造,有一个以上的委托人(或"origin",如果你喜欢) . 这只会改变如何评估同源策略,而不会改变一般安全性和特定混合内容策略的实现方式 . 那就是:你仍然无法对httpXHR
进行https,正如你所注意到的那样 .您可以在内容脚本中使用无法解决的问题 . 但是,您可以向主脚本发送消息来执行request并将结果(通过消息传递再次)传递回内容脚本 .
请file a bug . 至少应该记录这种限制 .
就个人而言,我不赞成解除它 . 混合内容是一个安全问题,除了
localhost
之外,所以绕过它的任何代码都应该在代码审查期间很容易检测到,比如我提出的建议的消息 - 背靠背工作(在代码审查期间引起注意的东西) . 或者也许只是举起localhost
?但是,这个决定取决于mozilla平台,附加SDK和安全团队 .