1

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

这是一个测试工具,不是普通用户的东西,所以我不介意增加一些延迟。有谁知道是否有其他方法可以做到这一点?我尝试使用 setTimeout,但它被内容安全策略阻止。使用 referrer 并不能完全减少它,因为它没有设置在来自 HTTPS 帧的 HTTP 请求上。

4

1 回答 1

1

我不确定我是否完全理解您要完成的工作,但这是我的想法。

设想

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

如果是这样的话,那么这就是我要尝试的;

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

2.注册onBeforeSendHeaders事件监听器,用于获取请求信息并与上一步存储的信息进行比较,如果通过了可以修改headers

所以代码会像这样

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

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

您的方法与我列出的方法之间的区别

在您的方法中,您使用异步消息在发送请求后检索有关框架的信息,在我的方法中,您将为您准备好这些信息,而无需进行任何进一步的消息传递,因此无论何时发生请求,您都可以立即使用它们。

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

于 2012-05-12T21:31:06.367 回答