我做了一些研究,现在我知道不可能在谷歌浏览器中发送带有更改的推荐人的请求,因为浏览器会覆盖更改,但无论如何/谷歌Chrome扩展程序中的任何权限都将禁用这个,或者使它可以向具有不同推荐人的某个域发送请求?
答案 0 :(得分:13)
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
告诉它暂停请求,直到句柄结束。