1

I'm writing an extension that eliminates the content of the request header "Referer" The problem is that even though the HTTP requests are sent with the "Referer" value empty, once the new page is loaded, the document.referrer value is correct. Is document.referrer obtained internally regardless of the "Referer" value ofHTTP requests and responses?

Code of the extension and content scripts follows...

chrome.webRequest.onBeforeSendHeaders.addListener(
    function(details){
        if(details.frameId == 0){
            var referrer = '';

            // traverse the headervalues and delete 'Referer'
            for (var i = details.requestHeaders.length - 1; i >= 0; i--) {
                if (details.requestHeaders[i].name == 'Referer'){
                    // save the value in order to compare it in the content script
                    referrer = details.requestHeaders[i].value;
                    details.requestHeaders[i].value = '';
                };
            }

            chrome.tabs.sendMessage(details.tabId, { event : "onBeforeSendHeaders", referrer : referrer });
            return({ requestHeaders : details.requestHeaders});
        }
    },
   {urls: ["<all_urls>"]},
   ["blocking", "requestHeaders"]
);


chrome.webNavigation.onDOMContentLoaded.addListener(
    function onDOMContentLoaded(details){
        if(details.frameId == 0){
            chrome.tabs.sendMessage(details.tabId, { event : "onDOMContentLoaded" });
        }
    }
);

and the content script

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse){
        switch(request.event){
            case "onBeforeSendHeaders" :
                console.log("onBeforeSendHeaders:" + request.referrer);
                break;          
            case "onDOMContentLoaded" :
                // this should be blank but instead, it has the same value 
                // of the request.referrer, which holds the value before being deleted
                console.log("onDOMContentLoaded:" + document.referrer);
                break;
            default : 
                console.log("default");
        }
    }
);

Any suggestions about what I'm doing wrong?

  • It seems its a read-only property see: http://stackoverflow.com/questions/14163356/changing-the-value-of-referrer or http://stackoverflow.com/questions/9580575/how-to-manually-set-referer-header-in-javascript – msanjay Aug 29 '13 at 12:30
  • I know it's read-only. But it must get its value from some place. If not from the HTTP headers, from where? – Juan Menéndez Buitrago Aug 30 '13 at 08:18

0 Answers0