在Chrome扩展程序中,更改发送到某个域的ajax请求的引荐来源?

时间:2015-06-23 09:37:13

标签: javascript jquery google-chrome google-chrome-extension

我做了一些研究,现在我知道不可能在谷歌浏览器中发送带有更改的推荐人的请求,因为浏览器会覆盖更改,但无论如何/谷歌Chrome扩展程序中的任何权限都将禁用这个,或者使它可以向具有不同推荐人的某个域发送请求?

1 个答案:

答案 0 :(得分:13)

chrome.webRequest是您正在寻找的,特别是onBeforeSendHeaders事件。它允许您在发送请求之前更改任何标头(甚至是不安全的标头),但只能在后台脚本中使用。

您需要将webRequestwebRequestBlocking添加到清单中的权限列表中。

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告诉您要获取requestHeadersblocking告诉它暂停请求,直到句柄结束。