В расширении 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 говорит ему приостановить запрос, пока ручка не будет завершена.