gpt4 book ai didi

google-chrome - Chrome 扩展 : webRequest. onBeforeSendHeaders 的行为很奇怪

转载 作者:行者123 更新时间:2023-12-04 12:23:36 26 4
gpt4 key购买 nike

我正在尝试向 Chrome 扩展程序中的某些 AJAX 请求添加“Referer”-HTTP-Header。
您不能直接在 AJAX 请求中更改它,所以我尝试使用 webRequest api 更改它。 :

chrome.webRequest.onBeforeSendHeaders.addListener(function(data) {
console.log("onBeforeSendHeaders fired");
var xdata=data.requestHeaders;
xdata.push({
"name":"Referer",
"value": "http://the.new/referrer"
})
return {requestHeaders: xdata};
}, { //Filter
urls: ["<all_urls>"], //For testing purposes
types: ["xmlhttprequest"]
},["requestHeaders","blocking"]);

但这不适用于我的扩展中的 AJAX 请求。它只在其他 AJAX 请求上触发事件,而不是在我的扩展中完成的事件。
另一个奇怪的事情是,当未设置“阻止”标志时一切正常,但是我无法更改标题。

有谁知道解决这个问题的方法(或实现我的目标的另一种方法:更改站点请求的“Referer”并检索内容)

谢谢 :)

最佳答案

这是一个适用于所有情况的工作版本(当已经设置了引用 header 时或尚未设置时。)

var requestFilter = {
urls: ["<all_urls>"]
},

extraInfoSpec = ['requestHeaders', 'blocking'],
handler = function(details) {

var isRefererSet = false;
var headers = details.requestHeaders,
blockingResponse = {};

for (var i = 0, l = headers.length; i < l; ++i) {
if (headers[i].name == 'Referer') {
headers[i].value = "http://your-url.com/";
isRefererSet = true;
break;
}
}

if (!isRefererSet) {
headers.push({
name: "Referer",
value: "http://your-url.com/"
});
}

blockingResponse.requestHeaders = headers;
return blockingResponse;
};

chrome.webRequest.onBeforeSendHeaders.addListener(handler, requestFilter, extraInfoSpec);

不要忘记将以下所有权限添加到您的 list 中:
"permissions": [  "webRequest", "webRequestBlocking", "<all_urls>" ]

关于google-chrome - Chrome 扩展 : webRequest. onBeforeSendHeaders 的行为很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986077/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com