adnan kamili
adnan kamili

Reputation: 9455

How to access request headers in onHeadersReceived event in Chrome extension

I was doing something similar:

chrome.webRequest.onBeforeSendHeaders.addListener(function (details) {

    for (var i = 0; i < details.requestHeaders.length; ++i)
    {
        if (details.requestHeaders[i].name.toLowerCase() === 'user-agent')
        {
            message.useragent = details.requestHeaders[i].value;
        } 
        else if (details.requestHeaders[i].name.toLowerCase() === 'referer')
        {
            message.referrer = details.requestHeaders[i].value;
        } 
        else if (details.requestHeaders[i].name.toLowerCase() === 'cookie')
        {
            message.cookies = details.requestHeaders[i].value;
            console.log(details.requestHeaders[i].value);
        }
    }
    return {
        requestHeaders: details.requestHeaders
    };
}, {
    urls: [
        '<all_urls>'
    ],
    types: [
        'main_frame',
        'sub_frame',
        'xmlhttprequest'
    ]
}, [
    'blocking',
    'requestHeaders'
]);

and on receiving response:

chrome.webRequest.onHeadersReceived.addListener(function (details) {

    message.url = details.url;
    // and some other details
    ...

But recently I discovered that sometimes request parameters stored and response parameters stored belong to different request response pairs. So, is this possible to access request headers in onHeadersReceived event to prevent mismatch.

Upvotes: 2

Views: 4527

Answers (1)

rsanchez
rsanchez

Reputation: 14657

You can use the requestId field to match headers saved in onBeforeSendHeaders with those in onHeadersReceived.

Request IDs are unique within a browser session. As a result, they could be used to relate different events of the same request.

Upvotes: 4

Related Questions