You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome Extension V3如何读取网络请求及响应头(不修改)

在Chrome扩展Manifest V3中读取出站请求及响应头的方案

不需要用declarativeNetRequest(它确实主打修改规则),你可以用**webRequest API**来监听并读取请求和响应头,完全不需要修改内容。具体步骤如下:

1. 配置Manifest权限

在manifest.json中添加必要的权限:

{
  "manifest_version": 3,
  "name": "Request Reader",
  "version": "1.0",
  "background": {
    "service_worker": "background.js"
  },
  "permissions": ["webRequest"],
  "host_permissions": ["<all_urls>"] // 或者指定你需要监听的特定域名,比如"https://*.example.com/*"
}
  • webRequest权限:允许扩展访问网络请求监听API
  • host_permissions:指定你需要监听的请求域名范围,<all_urls>表示所有域名,按需缩小范围更安全

2. 在Service Worker中监听请求事件

在background.js中添加监听逻辑,获取请求URL和响应头:

// 监听出站请求,获取请求URL
chrome.webRequest.onBeforeRequest.addListener(
  (details) => {
    // 这里可以获取请求URL、请求方法等信息
    console.log("请求URL:", details.url);
    console.log("请求方法:", details.method);
  },
  { urls: ["<all_urls>"] }, // 和host_permissions对应,限制监听范围
  [] // 不需要额外参数,因为我们只读信息
);

// 监听响应头接收事件,获取响应头
chrome.webRequest.onHeadersReceived.addListener(
  (details) => {
    // 这里可以获取响应头、状态码等信息
    console.log("响应状态码:", details.statusCode);
    console.log("响应头:", details.responseHeaders);
    // 比如获取特定响应头,比如Content-Type
    const contentType = details.responseHeaders.find(h => h.name.toLowerCase() === "content-type");
    if (contentType) {
      console.log("Content-Type:", contentType.value);
    }
  },
  { urls: ["<all_urls>"] },
  ["responseHeaders"] // 指定需要获取responseHeaders参数
);

关键说明

  • onBeforeRequest事件:在请求发送前触发,适合获取请求的URL、方法、请求体(如果需要的话,要加requestBody参数)等信息
  • onHeadersReceived事件:在响应头返回时触发,通过指定["responseHeaders"]参数可以拿到完整的响应头列表
  • 所有监听逻辑都要放在Service Worker中(Manifest V3要求),不能放在普通页面脚本里

内容的提问来源于stack exchange,提问作者user1480248

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 10:45:42