如何在浏览器扩展和本机应用程序之间建立进程间通信?有没有跨平台(Linux 和 Mac OS X)和跨浏览器(Firefox、Chrome、Safari)的解决方案?
我想到的唯一想法是使用本机 Web 技术,即在本机应用程序中嵌入 HTTP 服务器并使用 XmlHttpRequest 或 WebSockets。然而,这听起来像是笨重的矫枉过正,存在一些问题(例如安全性)。有更好的选择吗?
由于这是与此相关的投票率较高的问题之一,我将在这里指出,这个问题和接受的答案是在 Mozilla 放弃 XPI/XUL 扩展仅使用 WebExtensions 之前(大约 2017 年)。
对于现代浏览器,使用“本机消息传递”,它通过 stdin 发送 JSON + UTF-8 编码消息,并带有消息长度前缀。 FF 和 Chrome 之间仅存在一些明显和位置差异。有无连接消息传递和基于连接的消息传递。
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging
https://developer.chrome.com/docs/extensions/develop/concepts/native-messaging