リクエスト ヘッダー「Referer」の内容を削除する拡張機能を作成しています 問題は、HTTP リクエストが「Referer」の値を空にして送信されても、新しいページが読み込まれると、document.referrer の値が正しいことです。 . document.referrer は、HTTP リクエストとレスポンスの "Referer" の値に関係なく、内部で取得されますか?
拡張機能とコンテンツ スクリプトのコードは次のとおりです...
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" });
}
}
);
およびコンテンツ スクリプト
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");
}
}
);
私が間違っていることについて何か提案はありますか?