In Chrome Extension, change referrer for ajax requests sent to certain domain?

半腔热情 提交于 2020-01-01 09:11:54

问题


I've done some research and I now know it's not possible to send a request with a changed referrer in Google Chrome because the browser will overwrite the change, but is there anyway/any permissions in a Google Chrome Extension that would disable this, or make it so that you could send a request to a certain domain with a different referrer?


回答1:


chrome.webRequest is what you're looking for, specifically thee onBeforeSendHeaders event. It will allow you to change any headers (even unsafe ones) before sending the request, but can only be used in a background script.

You'll need to add webRequest and webRequestBlocking to your permissions list in the manifest.

chrome.webRequest.onBeforeSendHeaders.addEventListener(handle(details), filterObject, extraInfoArray);

Here's an example:

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"
]);

The filterObject tells it to only fire the handle for any with the urls matching ones in the list.

The extraInfoArray tells it you want to get requestHeaders, and blocking tells it to pause the request until the handle is finished.



来源:https://stackoverflow.com/questions/30999159/in-chrome-extension-change-referrer-for-ajax-requests-sent-to-certain-domain

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!