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

How to allow cross domain content script on Firefox add-on without firing mixed content blocking errors

本文关键字:混合 错误 脚本 Firefox 组件 许跨域      更新时间:2023-09-26

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

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

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

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

无法

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

请提交错误。至少应该记录这种限制。

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