XMLHttpRequest无法进行基本身份验证

Yur*_*ter 6 ajax xmlhttprequest pebble-watch pebble-sdk

知道为什么XMLHttpRequest使用正确的凭据在Pebble JS FrameworkAndroid上的基本身份验证失败但在iOS中有效吗?

完全相同的代码,类似于:

var req = new XMLHttpRequest();
req.open(method, url, true, user, pass);
req.send(data);
req.onreadystatechange = function() { ... }
Run Code Online (Sandbox Code Playgroud)

从Android Pebble应用程序返回401,但在iOS中正确验证.

Yur*_*ter 17

我在Android上找到了适用于我的解决方法.

不知道为什么但直接认证请求:

    req.open(method, fullurl, true, user, pass);
    req.send(data);
Run Code Online (Sandbox Code Playgroud)

不适合我 - 它总是返回401.所以我尝试通过标头设置基本身份验证:

    req.open(method, fullurl, true);
    req.setRequestHeader("Authorization", "Basic " + Base64.encode(user + ":" + pass)); 
    req.send(data);
Run Code Online (Sandbox Code Playgroud)

(其中Base64取自这里:https://stackoverflow.com/a/246813/961695) - 它有效!也许在Android上的XmlHttpRequest实现中存在一个错误.

  • 为什么不尝试btoa?是javascript纯..¬.¬尝试`req.setRequestHeader("授权","基本"+ btoa(用户+":"+传递)); (4认同)