Merge pull request #10869 from Rob--W/issue-10645-preserve-http-referer-again

Restore referrer preserving functionality in Chrome 72+
This commit is contained in:
Tim van der Meij 2019-05-29 23:46:52 +02:00 committed by GitHub
commit 5adb32371e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -41,14 +41,26 @@ var g_requestHeaders = {};
// g_referrers[tabId][frameId] = referrer of PDF frame.
var g_referrers = {};
var extraInfoSpecWithHeaders; // = ['requestHeaders', 'extraHeaders']
(function() {
var requestFilter = {
urls: ['*://*/*'],
types: ['main_frame', 'sub_frame'],
};
chrome.webRequest.onSendHeaders.addListener(function(details) {
g_requestHeaders[details.requestId] = details.requestHeaders;
}, requestFilter, ['requestHeaders']);
function registerListener(extraInfoSpec) {
extraInfoSpecWithHeaders = extraInfoSpec;
// May throw if the given extraInfoSpec is unsupported.
chrome.webRequest.onSendHeaders.addListener(function(details) {
g_requestHeaders[details.requestId] = details.requestHeaders;
}, requestFilter, extraInfoSpec);
}
try {
registerListener(['requestHeaders', 'extraHeaders']);
} catch (e) {
// "extraHeaders" is not supported in Chrome 71 and earlier.
registerListener(['requestHeaders']);
}
chrome.webRequest.onBeforeRedirect.addListener(forgetHeaders, requestFilter);
chrome.webRequest.onCompleted.addListener(forgetHeaders, requestFilter);
chrome.webRequest.onErrorOccurred.addListener(forgetHeaders, requestFilter);
@ -105,7 +117,7 @@ chrome.runtime.onConnect.addListener(function onReceivePort(port) {
urls: [data.requestUrl],
types: ['xmlhttprequest'],
tabId: tabId,
}, ['blocking', 'requestHeaders']);
}, ['blocking', ...extraInfoSpecWithHeaders]);
}
// Acknowledge the message, and include the latest referer for this frame.
port.postMessage(referer);