我知道chrome.webRequest.onBeforeRequest
允许拦截、分析和阻止请求,但它只允许访问请求标头,而不是请求正文(据我所知)。
示例用例:考虑拦截表单值。
似乎这里有一个 API 更改提案正好表明了这一点。
还有其他方法可以实现吗?
谢谢。
我知道chrome.webRequest.onBeforeRequest
允许拦截、分析和阻止请求,但它只允许访问请求标头,而不是请求正文(据我所知)。
示例用例:考虑拦截表单值。
似乎这里有一个 API 更改提案正好表明了这一点。
还有其他方法可以实现吗?
谢谢。
此功能现已添加到 API,请参阅文档。
为了访问正文,您需要执行以下操作:
chrome.webRequest.onBeforeRequest.addListener(
function(details)
{
console.log(details.requestBody);
},
{urls: ["https://myurlhere.com/*"]},
['requestBody']
);
这是我所做的
requestBody
来获取帖子请求正文decoder
将正文解析为字符串这是一个例子
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
if(details.method == "POST")
// Use this to decode the body of your post
var postedString = decodeURIComponent(String.fromCharCode.apply(null,
new Uint8Array(details.requestBody.raw[0].bytes)));
console.log(postedString)
},
{urls: ["<all_urls>"]},
["blocking", "requestBody"]
);
虽然您可能无法拦截,但您可以使用标准的 AJAX 方法对其进行胶带处理。与其发出 href 请求,不如看看您是否可以进行异步调用并将其保存到未显示的 HTML 对象中。然后抓取/读取/解析/无论您的主体标准是什么,如果它通过,则将该主体对象推回当前窗口/页面。
将内容存储在被抑制的元素中,然后将相同的元素用于内容将允许您避免重复调用。不利的一面是,您将获得最终不会使用的内容的完整内容。这可能是也可能不是带宽/速度性能问题。