J'ai un code angularjs existant qui fait un HTTP GET. Vous trouverez ci-dessous un code pertinent à l'intérieur du contrôleur.
.controller('imptViewCtrl', ['$scope', '$http',
function ($scope, $http, ) {
var url = $configuration.webroot + '/impt/list?list=testlist';
$http.get(url).then(function (response) {
tableData = response.data;
});
}]);
Je voudrais ajouter l'authentification de base HTTP à HTTP GET. Le nom d'utilisateur est foo
et le mot de passe est bar
. Comment cela peut-il être fait?
Parce que dans l'authentification de base, le nom d'utilisateur et le mot de passe sont décodés par base64. Vous devez d'abord trouver une bibliothèque pour faire ce travail à l'aise.
https://github.com/ninjatronic/angular-base64
Après cela, chargez base64
dans votre application et en-têtes de configuration.
angular
.module('myApp', ['base64'])
.config(function($httpProvider, $base64) {
var auth = $base64.encode("foo:bar");
$httpProvider.defaults.headers.common['Authorization'] = 'Basic ' + auth;
})
Vous pouvez également fournir l'en-tête d'authentification à la fonction get
séparément si vous le souhaitez.
var auth = $base64.encode("foo:bar"),
headers = {"Authorization": "Basic " + auth};
$http.get(url, {headers: headers}).then(function (response) {
Plutôt que d'utiliser une bibliothèque pour encoder votre authentification en base 64, vous pouvez simplement utiliser:
window.btoa("user:pass")
il est pris en charge par la plupart des navigateurs.
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/btoa