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

Chrome扩展中使用declarative_net_request无法修改WebSocket请求头

问题描述

在Chrome扩展中尝试修改WebSocket创建过程中的Origin请求头,已在权限中添加declarativeNetRequestWithHostAccess,使用modifyHeaders类型规则后,fetch()调用的请求头修改完全生效,但WebSocket的请求头修改无效。

规则文件 src/rules/example.json

[
  {
    "id": 2,
    "priority": 1,
    "action": {
      "type": "modifyHeaders",
      "requestHeaders": [
        {
          "header": "origin",
          "operation": "set",
          "value": "https://www.example.ai"
        },
        {
          "header": "referer",
          "operation": "set",
          "value": "https://www.example.ai"
        }
      ]
    },
    "condition": {
      "urlFilter": "example",
      "isUrlFilterCaseSensitive": false,
      "resourceTypes": ["xmlhttprequest", "websocket"]
    }
  }
]

manifest.json 相关配置

...
  "declarative_net_request": {
    "rule_resources": [
      {
        "id": "ruleset_example",
        "enabled": true,
        "path": "src/rules/example.json"
      }
    ]
  },
解决办法

WebSocket的Origin头属于Chrome的受保护请求头,默认无法通过普通modifyHeaders规则修改,需补充以下配置:

  • 补充权限配置
    在manifest.json的permissions数组中,添加declarativeNetRequest权限,并确保主机权限覆盖目标WebSocket的域名:

    "permissions": [
      "declarativeNetRequest",
      "declarativeNetRequestWithHostAccess",
      "*://*.example.com/*" // 替换为你的目标WebSocket域名
    ]
    
  • 修改规则的请求头配置
    给Origin头的修改项添加modifiesRequestHeader字段,明确声明允许修改受保护的Origin头,同时可提高规则优先级避免被其他规则覆盖:

    [
      {
        "id": 2,
        "priority": 10,
        "action": {
          "type": "modifyHeaders",
          "requestHeaders": [
            {
              "header": "origin",
              "operation": "set",
              "value": "https://www.example.ai",
              "modifiesRequestHeader": "origin" // 新增此行
            },
            {
              "header": "referer",
              "operation": "set",
              "value": "https://www.example.ai"
            }
          ]
        },
        "condition": {
          "urlFilter": "example",
          "isUrlFilterCaseSensitive": false,
          "resourceTypes": ["xmlhttprequest", "websocket"]
        }
      }
    ]
    
  • 版本检查
    modifiesRequestHeader参数要求Chrome 116及以上版本,若当前浏览器版本过低需升级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:35:03