使用WebRequest API确定传出请求的帧URL

时间:2012-05-12 02:08:11

标签: google-chrome-extension

我使用WebRequest API修改Chrome发送的请求。为了知道如何重写请求,我想知道导致传出请求的帧URL是什么。我看到我可以获取帧ID和选项卡ID,我可以使用它向内容脚本发送消息以找出URI。但由于消息传递始终是异步的,因此似乎无法确保在请求发送之前获取该信息。

这是一个测试工具,而不是普通用户的东西,所以我不会介意产生一些额外的延迟。有没有人知道是否还有另一种方法可以做到这一点?我尝试使用setTimeout但它已被内容安全策略阻止。使用referrer并没有完全削减它,因为它没有设置来自HTTPS框架的HTTP请求。

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全明白你想要完成什么,但这就是我的想法。

<强>方案

主框架google,子框架facebook和twitter,你想要修改来自facebook框架的任何请求!

如果是这种情况,那么这就是我要尝试的内容;

1.注册onCompleted事件监听器,它将用于检索已完成的请求信息,即url和frame id,并将它们存储在一个数组中。

2.注册onBeforeSendHeaders事件监听器,它将用于检索请求信息并将其与您在上一步中存储的请求信息进行比较,如果通过则可以修改标题

所以代码会像这样

onCompleted ({将信息-i.e. url和frame id-存储在数组中},...)

onBeforeSendHeaders ({将发出请求的帧ID与之前存储的帧ID进行比较,如果匹配则修改标题},...)

您的方法与我列出的方法之间的差异

在您的方法中,您使用异步消息在请求发送后检索有关帧的信息,在我的方法中,您将为您准备好这些信息,而无需进行任何进一步的消息传递,因此每当请求发生时您都可以使用他们马上就来了。

希望你会发现这很有帮助,祝你好运。