How to update request headers in MV3 extension like we used to do in MV2 (chrome.webRequest.onBeforeSendHeaders.addListener)

53 Views Asked by At

I'm in the process of transitioning my MV2 extension to MV3. However, I've encountered an issue with conditional header modifications in the chrome.webRequest.onBeforeSendHeaders event. I've already updated my manifest file and added the necessary permissions. Can you provide guidance or a solution specifically for this header modification challenge during the MV3 migration?

window.chrome.webRequest.onBeforeSendHeaders.addListener(
    function(params) {
        'use strict';
        var headers = params.requestHeaders,
            url = params.url;
        if (Tabs.indexOf(parms.tabId) > -1) {
            for (var i = 0; i < headers.length; i++) {
                var currentUserAgent = edit.userAgent; 
                var currentHeader = headers[i];
                // Headers are only sent in case of device modes
                if (currentHeader.name.toLowerCase() === 'user-agent'){
                    currentHeader.value = currentUserAgent;
                }
                if (edit.device === 'android-phone') {
                    if (currentHeader.name.toLowerCase() === 'sec-ch-ua') {
                        currentHeader.value = '"Google Chrome";v="117", "Not;A=Brand";v="8", "Chromium";v="117"';
                    } else if (currentHeader.name.toLowerCase() === 'sec-ch-ua-mobile') {
                        currentHeader.value = '?1';
                    } else if (currentHeader.name.toLowerCase() === 'sec-ch-ua-platform') {
                        currentHeader.value = '"Android"';
                    }
                }
            }
        }

        return {
            requestHeaders: headers
        };
    },

    {
        urls: [
            '<all_urls>'
        ]
    }, ['blocking', 'requestHeaders']
);

I'm working on migrating my extension from Manifest V2 to Manifest V3, and I'm facing an issue with the following code not functioning in MV3. I'm aware of the chrome.declarativeNetRequest API, but I'm struggling to understand how to adapt this code to work with it. Can someone provide guidance or an explanation on how to achieve the same functionality using chrome.declarativeNetRequest in MV3?

0

There are 0 best solutions below