我正在使用适用于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授权在我的扩展中发出请求,但在常规浏览器请求中没有标题?
是的,令人困惑的问题。如果您有疑问,我会尽力澄清一下。感谢
答案 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函数。