使用XMLHTTPRequest进行基本身份验证

x1a*_*1a0 20 javascript xmlhttprequest basic-authentication

我正在尝试使用XMLHTTPRequest在twitter上获取更新.

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

但是,使用我的嗅探器,我看不到任何授权标头被传递.因此,我从Twitter获得了401错误响应.

正确输入帐户和密码.

有人试过吗?谁能给我一些指示?谢谢.

Vit*_*bex 61

您只需要在base64编码的字符串中添加Authorization标头,用户名和密码,如下所示.

XMLReq.setRequestHeader("Authorization", "Basic " + btoa("username:password"));
Run Code Online (Sandbox Code Playgroud)


Tho*_*yer 9

在跨源请求中,withCredentials如果要发送用户凭据,则必须显式设置标志.

请参阅http://www.w3.org/TR/XMLHttpRequest/#the-withcredentials-attribute(其中用户凭据包括HTTP身份验证)

  • 新链接是 https://xhr.spec.whatwg.org/#the-withcredentials-attribute 和 https://xhr.spec.whatwg.org/#user-credentials (2认同)

mha*_*ler 3

由于Origin 策略,您无法从您的域向另一个域发出 XMLHttpRequest。例如http://twitter.com/...,除非您的脚本是从twitter.com. 如果您的脚本是从 加载的http://localhost/,则 AJAX 请求也需要转到 localhost。

  • 您_可以_向另一台服务器发出 XHR 请求,但该另一台服务器必须设置 CORS 标头,以便请求不会被您正在使用的浏览器拒绝(除非您使用的浏览器忽略了缺少 CORS 标头的狡猾浏览器)。 (6认同)