确定其他扩展程序提出的请求?

时间:2014-08-21 11:56:29

标签: security google-chrome google-chrome-extension

我希望我的扩展程序能够侦听其他扩展程序发出的请求。我无法控制他们正在与之交谈的服务器 - 我还想在他们发出请求时进行记录,以帮助识别this.

等内容

我已经使用chrome.webRequest.onBeforeRequest事件进行了测试,但我看到了获取请求来源信息的唯一方法是通过tabId属性。对于扩展背景页面发出的请求,此属性为-1。

enter image description here

我已经通过让我自己的扩展程序每5秒发出一次请求进行测试,然后我可以看到事件被触发,但是没有足够的信息来识别来自任何特定扩展名的请求。

我有什么遗漏,还是其他方式可以解决这个问题?

1 个答案:

答案 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获得。