$ http Get请求中的基本身份验证

时间:2017-03-03 16:32:51

标签: angularjs angularjs-http request-headers

我正在尝试使用基本身份验证访问REST API服务。

这完全可以作为卷曲请求:

curl -D- -X GET -H "Authorization: Basic eW**********0NQ==" -H "Content-Type: application/json" "https://api.domain.com/api/users/email/first.last@domain.com"

在角度方面,我尝试了这个并且它似乎不起作用,因为我得到501错误...

var _url = "https://api.domain.com/api/users/email/first.last@domain.com";
var _authdata = Base64.encode('MyUsername' + ':' + 'MyPassword');
var _headers = {
   'Authorization': 'Basic eWd***********0NQ==',
   'Content-Type': 'application/json'               
};

$http({
     method: 'GET',
     url: _url,
     headers: _headers
}).then(function(request) {
     console.log('request');
});

我试图理解为什么这样做不正常。 CORS不是问题...

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用javascript“btao”和“atob”或者你可以包含base64到npm

的angular-js无法理解Base64.encode

可能以下代码snipet会帮助您。

var _url = "https://api.domain.com/api/users/email/first.last@domain.com";
  var _authdata = btoa('MyUsername' + ':' + 'MyPassword');
  var _headers = {
     'Authorization': 'Basic' + _authdata,
     'Content-Type': 'application/json'               
  };

  $http({
       method: 'GET',
       url: _url,
       json: true,
       headers: _headers
  }).then(function(request) {
       console.log('request');
  });

或者您可以使用npm包含agnular-base64依赖项: https://www.npmjs.com/package/angular-base64