使用XMLHTTPRequest进行基本身份验证

27

我试图使用XMLHTTPRequest来获取Twitter的更新。

var XMLReq = new XMLHttpRequest();
XMLReq.open("GET", "http://twitter.com/account/verify_credentials.json", false, "TestAct", "password");
XMLReq.send(null);

然而,使用我的嗅探器,我看不到通过任何授权标头传递的信息。 因此,我从 Twitter 获取了 401 错误响应。

帐户和密码已正确输入。

有人尝试过这个吗? 能否给我一些提示? 谢谢。

3个回答

78

您只需要按照以下方式添加Authorization标头,用户名和密码的base64编码字符串即可。

XMLReq.setRequestHeader("Authorization", "Basic " + btoa("username:password"));

1
代码片段中的client应该是来自问题的变量XMLReq吗? - JaKu
实际上,是的,你说得对。该方法是XMLHttpRequest.setRequestHeader(header, value)。 - Vitor Arbex

10

2
新的链接是 https://xhr.spec.whatwg.org/#the-withcredentials-attribute 和 https://xhr.spec.whatwg.org/#user-credentials。 - sberder

3
由于“同源策略”,您不能从您的域向另一个域发出XMLHttpRequest。例如,除非您的脚本是从twitter.com加载的,否则您不能使用http://twitter.com/... URL。如果您的脚本是从http://localhost/加载的,则AJAX请求也需要发送到localhost。

5
你可以向另一个服务器发起XHR请求,但那个服务器必须为该请求设置CORS头,以免被你正在使用的浏览器拒绝(除非你使用一款忽略CORS头缺失的不良浏览器)。 - Griknok

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接