在 Chrome 扩展中,更改发送到特定域的 ajax 请求的引荐来源网址?

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

我做了一些研究,现在我知道无法在 Google Chrome 中发送带有更改引荐来源网址的请求,因为浏览器会覆盖更改,但是 [= Google Chrome 扩展中的 14=] 权限将禁用此功能,或者使您可以使用不同的引荐来源网址向特定域发送请求?

chrome.webRequest 是您要查找的内容,特别是 onBeforeSendHeaders 活动。它将允许您在发送请求之前更改任何 headers(甚至是不安全的),但只能在后台脚本中使用。

您需要将 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",
    "extraHeaders"
]);

filterObject 告诉它只触发与列表中的 url 匹配的句柄。

extraInfoArray告诉它你想得到requestHeadersblocking告诉它暂停请求直到句柄完成。