I have an existing angularjs code which makes a HTTP GET. Extracted below is some relevant code inside the controller.
.controller('imptViewCtrl', ['$scope', '$http',
function ($scope, $http, ) {
var url = $configuration.webroot + '/impt/list?list=testlist';
$http.get(url).then(function (response) {
tableData = response.data;
});
}]);
I would like to add HTTP basic authentication to the HTTP GET. The username is foo and the password is bar. How can this be done?
Because in basic authentication, the username and password are decode by base64. You need to find a library to do this work for comfortable first.
https://github.com/ninjatronic/angular-base64
After that, load base64 into your app and config headers.
angular
.module('myApp', ['base64'])
.config(function($httpProvider, $base64) {
var auth = $base64.encode("foo:bar");
$httpProvider.defaults.headers.common['Authorization'] = 'Basic ' + auth;
})
You can also provide the authentication header to get function seprately if you like.
var auth = $base64.encode("foo:bar"),
headers = {"Authorization": "Basic " + auth};
$http.get(url, {headers: headers}).then(function (response) {
Rather than using a library to encode your auth by base 64, you could just use:
window.btoa("user:pass")
it's supported by most browsers.
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa
来源:https://stackoverflow.com/questions/34413732/add-http-basic-authentication-to-this-http-get-in-angularjs