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

时间:2014-01-01 00:49:09

标签: javascript ajax google-chrome-extension cross-domain same-origin-policy

我正在尝试在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;
    }
});

如您所见,原点发生了变化。但是当Chrome扩展程序执行时,原点会被覆盖到chrome-extension://iphajdjhoofhlpldiilkujgommcolacc并且控制台会出错'拒绝设置不安全的标题“origin”'

我已关注Chrome API(http://developer.chrome.com/extensions/xhr.html),并已按以下方式设置权限

"permissions": [
     "https://www.somewebsite.com/*"
 ],

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

1 个答案:

答案 0 :(得分:5)

您可能误解了 the docs
扩展程序可以请求访问其来源之外的远程服务器

这意味着扩展程序可以将请求发送到远程服务器(即浏览器本身不会阻止请求,就像普通网页的JS一样)。
这样做意味着允许扩展程序与请求一起发送任意标头,也不允许远程服务器响应请求。


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