I am trying to develop a chrome tool to spoof HTTP request and response headers. Request spoofing works fine. This code changes UA in request header but in response header I can't change anything. e.g. I am trying to change "Set-Cookie" but it won't work. I have used two codes for response. Here's my code:
Request
var requestFilter = {
urls: [ "<all_urls>" ]
},
extraInfoSpec = ['requestHeaders','blocking'],
handler = function( details ) {
var headers = details.requestHeaders,
blockingResponse = {};
for( var i = 0, l = headers.length; i < l; ++i ) {
if( headers[i].name == 'User-Agent' ) {
headers[i].value = 's';
break;
}
}
blockingResponse.requestHeaders = headers;
return blockingResponse;
};
chrome.webRequest.onBeforeSendHeaders.addListener( handler, requestFilter, extraInfoSpec );
Response
chrome.webRequest.onHeadersReceived.addListener(function(details){
details.responseHeaders[details.responseHeaders.length] = {name: 'Set-Cookie', value: 'some random value'};
return {responseHeaders: details.responseHeaders};
},{urls:["<all_urls>"],types:["xmlhttprequest","sub_frame"]},
["responseHeaders","blocking"]);
Response 2
var responseListener = function(details){
var rule = {
"name": "Set-Cookie",
"value": "Some Random Value"
};
details.responseHeaders.push(rule);
return {responseHeaders: details.responseHeaders};
};
chrome.webRequest.onHeadersReceived.addListener(responseListener,
{urls: [ "*://*/*" ] },
["blocking", "responseHeaders"]);