В расширении Chrome измените реферер для ajax-запросов, отправленных в определенный домен?
Я провел некоторое исследование, и теперь я знаю, что невозможно отправить запрос с измененным реферером в Google Chrome, потому что браузер перезапишет изменение, но есть ли в любом случае/какие-либо разрешения в расширении Google Chrome, которые отключили бы это, или сделать так, чтобы вы могли отправить запрос в определенный домен с другим реферером?
1 ответов
chrome.запросы WebRequest это то, что вы ищете, конкретно тебе onBeforeSendHeaders
событие. Это позволит вам изменить любые заголовки (даже небезопасные) перед отправкой запроса, но может использоваться только в фоновом скрипте.
вам нужно добавить webRequest
и webRequestBlocking
в список разрешений в манифесте.
chrome.webRequest.onBeforeSendHeaders.addEventListener(handle(details), filterObject, extraInfoArray);
вот пример:
chrome.webRequest.onBeforeSendHeaders.addListener(function(details){
var newRef = "http://referer.domain/helloworld.example";
var gotRef = false;
for(var n in details.requestHeaders){
gotRef = details.requestHeaders[n].name.toLowerCase()=="referer";
if(gotRef){
details.requestHeaders[n].value = newRef;
break;
}
}
if(!gotRef){
details.requestHeaders.push({name:"Referer",value:newRef});
}
return {requestHeaders:details.requestHeaders};
},{
urls:["http://target.domain/*"]
},[
"requestHeaders",
"blocking"
]);
на filterObject
говорит ему только стрелять ручкой для любого с соответствующими URL-адресами в списке.
на extraInfoArray
говорит, что вы хотите получить requestHeaders
и blocking
говорит ему приостановить запрос, пока ручка не будет завершена.