使用webRequest阻止和修改AJAX请求

时间:2013-05-31 21:48:05

标签: google-chrome google-chrome-extension

我有一个chrome扩展程序,目前正在使用webrequest api。我的问题很简单,是否可以使用webrequest api阻止和修改 AJAX请求?如果不是有解决方法吗?

PS。 我试图将一些HTML注入到GMail电子邮件中,但到目前为止我找到的唯一解决方案是检测所有各种类型的组合,然后注入我的HTML。这种方法很好,除了它不稳定,只有大约70%的时间插入工作。

如果有更好的方法,请告诉我,谢谢!

修改

如果有人需要,可以找到一些替代解决方案。

  • 覆盖默认的XMLHttpRequest.send方法以广播事件。您可以在发出请求之前修改请求。
  • 覆盖默认表单提交方法并在提交之前拦截所有表单提交(修改表单数据)

2 个答案:

答案 0 :(得分:2)

虽然您可以通过将type property for chrome.webRequest明确设置为xmlhttprequest来检测XMLHttpRequests,但您只能阻止异步请求。

从扩展程序生成的同步XMLHttpRequests对阻止事件处理程序是隐藏的,以防止死锁。此外,webRequest API仅公开对清单的permissions区域中定义的URi模式进行的调用。

答案 1 :(得分:2)

目前无法使用webRequest api访问或修改响应正文。铬中有open issue请求该功能。他们最近实现了accessing the request body的能力,所以他们也有可能也会添加它。

this answer中所述,您可能会更好地使用修改XMLHttpRequest对象的技术。 Here你有一个逐步的案例研究,其中拦截和修改了AJAX响应。