在 Chrome 扩展开发中使用 fetch() ,无法设置 Referer头。问题解决方案

之前使用 manifest V3 开发一个 Chrome 浏览器扩展时。遇到一个问题在使用fetch发送POST请求时设置的referer,实际chrome 浏览器扩展并不会附加该头文件。折腾好长时间终于找到解决方案,在此记录。

manifest.json配置:

"permissions": [
    ...
    "declarativeNetRequestWithHostAccess",
    "declarativeNetRequestFeedback"
  ],

background.js

chrome.runtime.onInstalled.addListener(async () => {
  const rules = [{
    id: 1,
    action: {
      type: 'modifyHeaders',
      requestHeaders: [{
        header: 'Referer',
        operation: 'set',
        value: 'whatever',
      }],
    },
    condition: {
      domains: [chrome.runtime.id],
      urlFilter: '|https://api.myserver.com/',
      resourceTypes: ['xmlhttprequest'],
    },
  }];
  await chrome.declarativeNetRequest.updateDynamicRules({
    removeRuleIds: rules.map(r => r.id),
    addRules: rules,
  });
});

关联帖子:求助帖 无法在Chrome扩展程序中设置Refere标头

5 Likes

好文!

好文!

Mark

:wave: :wave:

为什么不把 Referer数据放在请求体里呢?

24 Likes

好文!

26 Likes

good job

好文

好文

好文

好文

非常好,完美解决了我的问题。

From #dev to 开发调优