Comment puis-je garder Firefox invite l'utilisateur à nom d'utilisateur / mot de passe avec HTTP Basic Auth avec JQuery AJAX?

StackOverflow https://stackoverflow.com/questions/928874

Question

J'écris une fonctionnalité dynamique côté navigateur et en utilisant HTTP Basic Auth pour protéger certaines ressources. L'expérience utilisateur est très important et très personnalisé.

Voici une méthode JQuery de test simple qui permettra de tester éventuellement si un utilisateur a fourni les informations d'identification droite sous une forme:

$(document).ready(function() {
    $("#submit").click(function() {
    var token = Base64.encode($('#username').val() + ':' + $('#password').val());        
    $.ajax({
      url: '/private',
      method: 'GET',
      async: false,
      beforeSend: function(req) {
        req.setRequestHeader('Authorization', 'test:password');
      },
      error: function(request, textStatus, error) {
        if (request.status == 401) {
          alert('401');
        }
      }
    });
    return false;
  });
});

S'ils ne sont pas autorisés à accéder /private, au moment où ils devraient voir juste la zone d'alerte. Cependant, sur Firefox, un formulaire de connexion navigateur fourni apparaît (pour une nouvelle tentative avec de nouvelles références). Safari ne le fait pas.

Nous voulons contrôler complètement l'expérience avec des formulaires personnalisés, des fondus, des transitions, etc. Comment puis-je conserver la boîte par défaut de Firefox d'être montré? (Si ce sera un problème lorsque nous testons pour IE, j'aimerais entendre là des solutions, aussi.)

Était-ce utile?

La solution

Autres conseils

La solution est de mettre l'en-tête de WWW-Authenticate autre chose que Basic. Par exemple fixé à:

WWW-Authenticate: None

ou

WWW-Authenticate: FormBased

si vous utilisez la connexion par formulaire. Ensuite, le navigateur ne vous affichera une fenêtre de connexion.

Unfortunatly, je frappais la même question ici.

À mon avis, les navigateurs ne devrait pas donner une invite pour un XMLHttpRequest. Je souhaite vraiment que quelqu'un pousser que les gens de cause sont vraiment désireux de passer à jQuery pour leurs besoins auth.

est bien ici l'aide que je peux vous donner, je l'ai trouvé cette chose jQuery Digest, je ne sais pas ce qu'il fait vraiment ou quoi que ce soit, mais si quelqu'un pourrait prendre ce code dans le bon sens, nous pourrions avoir un jquery digérer système auth .

https://www.openhub.net/p/digestj

Je pense avec cette nouvelle option AuthDigestDomain pratique, nous pourrions avoir le script ci-dessus réécrite ou autre chose et avoir la zone sécurisée « liée » ensemble et nous pourrions franchir ce problème une fois pour toutes. Eh bien ... bonne chance =)

J'ai trouvé quelque part une solution de ce problème popup d'authentification.

WWW-Authenticate: None

ne fonctionne pas pour moi, mais j'ai ajouté

'Authorization': 'Basic'

pour les en-têtes et il fonctionne comme un charme.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top