web-dev-qa-db-fra.com

Comment envoyer l'en-tête d'autorisation avec le navigateur

J'ai mis en place un serveur Web utilisant l'authentification de base (à l'aide de Security Spring).

J'ai désactivé le point d'entrée d'authentification par défaut lors de l'accès à une URL (au lieu de répondre 401 avec l'en-tête de l'authentification www, il vient de retourner 401), le but est d'empêcher le navigateur d'afficher la fenêtre de l'authentification.

Je suis capable de vous connecter au serveur avec le code JavaScript et des outils de ligne de commande tels que CURL, cependant, lorsque je l'ai testé avec des navigateurs (Chrome & Firefox), ils n'envoient tout simplement pas l'en-tête.

curl -v -u user:password localhost:8080/user

Obtenir/utilisateur http/1.1
Hôte: localhost: 8080
[.____] Autorisation: BASIC DXNLCJPWYXNZD29YZA ==
[.____] User-Agent: Curl/7.58.0
[.____] accepter: /

Chrome: version 71.0.3578.98 (construction officielle) (64 bits)
[.____] http: // utilisateur: mot de passe @ localhost: 8080/utilisateur

Obtenir/utilisateur http/1.1
Hôte: localhost: 8080
[.____] Connexion: Garder-vivant
Upgrade-Insécurez-Demandes: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Applewebkit/537.36 (KHTML, comme Gecko) Chrome/71.0.3578.98 Safari/537.36
[.____] DNT: 1
J'accepte:
Texte/HTML, Application/XHTML + XML, Application/XML; q = 0,9, image/Webp, image/apng, /; q = 0,8
[.____] accepter-coding: gzip, dégonfler, BR accepte-langue: EN-AU, EN; q = 0,9, fr-fr; q = 0,8, fr; q = 0,7, fr-gb; q = 0,6, en-nous; q = 0.5

Pourquoi les navigateurs n'envoient pas l'en-tête d'authentification.

8
zeralight

réellement vous pouvez. à l'aide du côté client JavaScript, vous pouvez envoyer. Utilisez AJAX Demande. Passez jeton d'authentification dans XHR Demande param.

<script type='text/javascript'>
// define vars
var url = 'https://...';

// ajax call
$.ajax({
    url: url,
    dataType : 'jsonp',
    beforeSend : function(xhr) {
      // set header if JWT is set
      if ($window.sessionStorage.token) {
          xhr.setRequestHeader("Authorization", "Bearer " +  $window.sessionStorage.token);
      }

    },
    error : function() {
      // error handler
    },
    success: function(data) {
        // success handler //can redirect to any route of your wish
    }
});
</script>

P.S. - J'ai eu un indiceOù enregistrer un JWT dans une application à base de navigateur et comment l'utiliser

1
kishore