从chrome扩展中拦截HTTP请求正文

时间:2012-07-21 16:21:04

标签: javascript google-chrome google-chrome-extension

我知道chrome.webRequest.onBeforeRequest允许拦截,分析和阻止请求,但它只允许访问请求标头,而不是请求主体(据我所知)。

示例用例:考虑拦截表单值。

似乎有一个API更改提案here正好提出这一点。

还有另一种方法可以实现吗?

感谢。

3 个答案:

答案 0 :(得分:12)

此功能现已添加到API中,请参阅documentation

要访问正文,您需要执行以下操作:

chrome.webRequest.onBeforeRequest.addListener(
    function(details)
    {
        console.log(details.requestBody);
    },
    {urls: ["https://myurlhere.com/*"]},
    ['requestBody']
);

答案 1 :(得分:2)

虽然您可能无法拦截,但您可以使用标准的AJAX方法对其进行管道传输。而不是使href请求看到您是否可以进行异步调用并将其保存到未呈现的HTML对象。然后刮/读/解析/无论您的身体标准是什么,如果它通过,将该身体对象推回到当前窗口/页面。

将内容存储在已抑制的元素中,然后将相同的元素用于内容,可以避免重复调用。缺点是你将获得你最终不会使用的东西的全部内容。这可能是也可能不是带宽/速度性能问题。

答案 2 :(得分:0)

这就是我所做的

  1. 我使用AddModelError()来获取帖子请求正文
  2. 我使用ViewBag.Message将正文解析为字符串

这里是一个示例

requestBody