Chrome Extension Service Worker 提取请求中的来源已更改

Origin is changed in Chrome Extension Service Worker Fetch Request

您好,我正在为社交媒体营销开发 chrome 扩展。我在 service_worker 中使用 fetch 在 facebook 上发送请求,但它对我不起作用。

当我从网络请求中将此请求复制为获取请求,然后将其粘贴到 Facebook 页面时,它运行良好。

不同之处在于 origin-header 在 service-worker 中发送此请求时被覆盖,这就是为什么它对我不起作用。

我正在使用此代码更改 headers 但这对我也不起作用。

await chrome.webRequest.onBeforeSendHeaders.addListener(
 (details) => {
       let { requestHeaders } = details;
       const headerList = {};

       for (let i = 0; i < requestHeaders.length; i += 1) {
           if (requestHeaders[i].name === 'Origin') {
               requestHeaders[i].value = 'https://m.facebook.com';
               break;
           }
       }

       headerList.requestHeaders = requestHeaders;

       return headerList;
   }, { urls: ["<all_urls>"] }, ["requestHeaders", "extraHeaders"]) 

能否请您详细说明我应该如何使用webRequest.onbeforeSendHeaders来更改headers。如果一定要用declarativeNetRequest,我应该怎么用呢

我正在使用 Manivest 版本 3 BTW。

我用 chrome.declarativeNetRequest.updateDynamicRules 覆盖了 headers

这是代码。

await chrome.declarativeNetRequest.updateDynamicRules(
    {
        addRules: [{
            "id": 1,
            "priority": 1,
            "action": {
                type: 'modifyHeaders',
                requestHeaders: [
                    { header: 'origin', operation: 'set', value: "https://www.facebook.com" }
                ],
            },
            "condition": { "urlFilter": "facebook.com", "resourceTypes": ["xmlhttprequest"] }
        }
        ],
        removeRuleIds: [1]
    },
)

您还必须提供在 manifest.json

中使用 declarativeNetRequest 的权限