我希望我的扩展程序能够侦听其他扩展程序发出的请求。我无法控制他们正在与之交谈的服务器 - 我还想在他们发出请求时进行记录,以帮助识别this.
等内容我已经使用chrome.webRequest.onBeforeRequest事件进行了测试,但我看到了获取请求来源信息的唯一方法是通过tabId属性。对于扩展背景页面发出的请求,此属性为-1。
我已经通过让我自己的扩展程序每5秒发出一次请求进行测试,然后我可以看到事件被触发,但是没有足够的信息来识别来自任何特定扩展名的请求。
我有什么遗漏,还是其他方式可以解决这个问题?
答案 0 :(得分:2)
扩展程序无法轻松可靠地识别其他扩展程序发出的请求,因为扩展程序可能使用内容脚本执行请求,这与插入内容脚本的页面所做的请求无法区分。
如果扩展程序尚未声明访问特定网站的权限,则请求标头将包含Origin: chrome-extension://[extensionid]/...
请求标头。如果需要,可以通过扩展故意欺骗此值。此外,扩展在没有正确权限的情况下执行跨源请求的情况非常少见,因为只有在服务器接受CORS的跨源请求时才会接受请求。
如果您确实想要识别其他扩展程序发出的请求,那么您可以通过chrome.debugger
API使用远程调试协议来获取网络请求的通知。远程调试协议记录在https://developer.chrome.com/devtools/docs/debugger-protocol,网络消息的相关部分可在https://developer.chrome.com/devtools/docs/protocol/1.1/network获得。