Here's a working version that works in all cases (when the title bar is already installed or when it has not been set.)
var requestFilter = { urls: ["<all_urls>"] }, extraInfoSpec = ['requestHeaders', 'blocking'], handler = function(details) { var isRefererSet = false; var headers = details.requestHeaders, blockingResponse = {}; for (var i = 0, l = headers.length; i < l; ++i) { if (headers[i].name == 'Referer') { headers[i].value = "http://your-url.com/"; isRefererSet = true; break; } } if (!isRefererSet) { headers.push({ name: "Referer", value: "http://your-url.com/" }); } blockingResponse.requestHeaders = headers; return blockingResponse; }; chrome.webRequest.onBeforeSendHeaders.addListener(handler, requestFilter, extraInfoSpec);
Remember to add all of the following permissions to the manifest:
"permissions": [ "webRequest", "webRequestBlocking", "<all_urls>" ]
source share