Reputation: 9455
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
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