Je dois envoyer une demande d’autorisation en utilisant l’authentification de base. J'ai réussi à implémenter cela en utilisant jquery. Cependant, lorsque je reçois une erreur 401, le popup de navigateur d’authentification de base s’ouvre et le rappel d’erreur jax ajax n’est pas appelé.
Réponses
Trop de publicités?J'ai été confronté à ce problème récemment, trop. Puisque vous ne pouvez pas modifier le navigateur par défaut de l'affichage du popup dans le cas d'un 401 (de base ou digest authentification), il y a deux façons de résoudre ce problème:
- Modifier la réponse du serveur pour ne pas retourner 401. De retour de 200 code au lieu et à les traiter dans votre JQuery client.
-
Changement de la méthode que vous utilisez pour l'autorisation d'une valeur personnalisée dans votre en-tête. Les navigateurs de l'affichage de la popup pour Basic et Digest. Vous devez changer ce sur le client et le serveur.
les en-têtes : { "Autorisation" : "BasicCustom" }
Veuillez également prendre lookg à présent un exemple d'utilisation de JQuery avec l'Authentification Basique.
Renvoie un code d'état générique 400, puis traite ce côté client.
Ou vous pouvez conserver le 401 sans renvoyer l'en-tête WWW-Authenticate, ce à quoi répond le navigateur avec le menu contextuel d'authentification. Si l'en-tête WWW-Authenticate est manquant, le navigateur ne demandera pas d'informations d'identification.
Vous pouvez supprimer les popups d'authentification de base avec une URL de requête ressemblant à ceci:
https://username:password@example.com/admin/...
Si vous obtenez une erreur 401 (nom d'utilisateur ou mot de passe incorrect), elle sera correctement gérée avec le rappel d'erreur jquery. Cela peut causer des problèmes de sécurité (dans le cas du protocole http au lieu de https), mais cela fonctionne.
Créez une URL / login, puis acceptez les paramètres "utilisateur" et "mot de passe" via GET et ne nécessitez pas d'authentification de base. Ici, utilisez php, node, java, peu importe, analysez votre fichier passwd et faites correspondre les paramètres (utilisateur / pass) à celui-ci. S'il existe une correspondance, redirigez-le vers http: // utilisateur: pass@domaine.com/ (cela définira les informations d'identification sur votre navigateur) . Sinon , envoyez une réponse 401 (sans en-tête WWW-Authenticate).