带有HTTP授权的Chrome扩展程序中的XMLHttpRequest继续在常规页面上发送授权标头

时间:2011-07-06 15:23:51

标签: javascript google-chrome google-chrome-extension xmlhttprequest

我正在使用适用于Basecamp API的Chrome扩展程序。

我有一个后台页面,用于处理API的所有XMLHttpRequests。我没有使用OAuth,而是使用API​​令牌的基本HTTP授权。

在我的背景页面中,我会做这样的请求:

var xmlReq = new XMLHttpRequest();
xmlReq.onreadystatechange = function(){ doSomething(xmlReq.responseXML); };

xmlReq.open(
  'GET', 
  'https://mycompany.basecamphq.com/projects.xml',
   true, 
   access_token, 
   'x'
);

xmlReq.send(null);

一切正常,但问题是在我使用扩展程序发出请求后,每当我浏览https://mycompany.basecamphq.com时都会发送HTTP请求标头授权,这会使某些事情无法在Basecamp的Web界面上运行。如何使用基本HTTP授权在我的扩展中发出请求,但在常规浏览器请求中没有标题?

是的,令人困惑的问题。如果您有疑问,我会尽力澄清一下。感谢

1 个答案:

答案 0 :(得分:4)

我相信我已经找到了解决方案。

通过使用xmlhttpresponse.setRequestHeader()函数,如果我手动设置授权标头,它就不会保持持久性。

所以使用上面代码的这个修改版本:

xmlReq.open(
  'GET', 
  'https://mycompany.basecamphq.com/projects.xml',
   true);

xmlReq.setRequestHeader("Authorization", "Basic "+base64_encode(access_token+":x"));

xmlReq.send(null);

我使用了phpjs.org库中的base64_encode函数。