Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Chrome扩展中,更改发送到特定域的ajax请求的引用者?_Javascript_Jquery_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript 在Chrome扩展中,更改发送到特定域的ajax请求的引用者?

Javascript 在Chrome扩展中,更改发送到特定域的ajax请求的引用者?,javascript,jquery,google-chrome,google-chrome-extension,Javascript,Jquery,Google Chrome,Google Chrome Extension,我做了一些研究,现在我知道不可能在Google Chrome中发送带有更改的推荐人的请求,因为浏览器将覆盖更改,但是Google Chrome扩展中是否有/任何权限会禁用此功能,或者这样做,以便您可以使用不同的推荐人向某个域发送请求?是您正在寻找的,特别是在SendHeaders事件之前。它允许您在发送请求之前更改任何标题(即使是不安全的标题),但只能在后台脚本中使用 您需要将webRequest和webRequestBlocking添加到清单中的权限列表中 chrome.webRequest.

我做了一些研究,现在我知道不可能在Google Chrome中发送带有更改的推荐人的请求,因为浏览器将覆盖更改,但是Google Chrome扩展中是否有/任何权限会禁用此功能,或者这样做,以便您可以使用不同的推荐人向某个域发送请求?

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

您需要将
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",
    "extraHeaders"
]);
filterObject
告诉它只为任何URL与列表中的URL匹配的URL启动句柄


extraInfoArray
告诉它你想获取
requestHeaders
,而
阻塞
告诉它暂停请求直到句柄完成。

假设这是可能的,你会如何处理,请用户更改他们的Chrome设置?这是个人使用的,我只是希望能够发送来自某个推荐人的请求。但是,是否可以更改浏览器设置以不覆盖推荐人?如果是这样的话,如何做到这一点?从chrome 72开始,还必须将“extraHeaders”添加到extraInfoArray中,以便设置以下标题:接受语言、接受编码、引用器、Cookie我已经在background.js中实现了此代码和控制台,它反映了更改的引用器,但是,当打开开发者工具或单击某个链接时,我如何在页面中检查相同的内容。我将上述代码(具有上述权限)按原样粘贴到我的
background.js
文件中。刚刚更改了
目标URL
。这是行不通的。此外,我无法将后台
持久化
设置为
,因为它不会在事件页面上运行。必须将其设置为
true
才能运行。请帮忙。