Chrome扩展程序:如何更改AJAX请求标头中的来源?

Mar*_*ria 6 javascript ajax cross-domain same-origin-policy google-chrome-extension

我正在尝试在ajax请求标头中手动设置原点.在我的background.js中,我有这个

var ajaxResponse;
$.ajax({
    type:'POST',
    url:'www.somewebsite.com/login/login.asp',
    headers:{
            'origin': 'https://www.somewebsite.com'
    },
    success: function(response){
        ajaxResponse = response;
    }
});
Run Code Online (Sandbox Code Playgroud)

如您所见,原点已更改.但是,当Chrome扩展程序执行时,原点会被覆盖chrome-extension://iphajdjhoofhlpldiilkujgommcolacc并且控制台会出现错误"拒绝设置不安全标头"来源"'

我已经关注Chrome API(http://developer.chrome.com/extensions/xhr.html),并且已经设置了如下权限

"permissions": [
     "https://www.somewebsite.com/*"
 ],
Run Code Online (Sandbox Code Playgroud)

有谁知道如何在标题中正确设置原点?谢谢!

gka*_*pak 6

您可能误解了文档:
扩展可以请求访问其源外的远程服务器

这意味着扩展可以将请求发送到远程服务器(即浏览器本身不会像普通网页的JS那样阻止请求).
但这并不意味着扩展将被允许发送任意伴随该请求,也没有远程服务器响应请求头.


因此,如果远程服务器需要Origin标头的特定值,那么您无法做任何事情,因为根据规范,您不允许设置Origin标头(此限制也适用于扩展).