Comment empêcher Firefox de demander un nom d'utilisateur / mot de passe avec HTTP Basic Auth avec JQuery AJAX?

Je suis en train d'écrire certains navigateur côté dynamique de la fonctionnalité et l'utilisation de HTTP Basic Auth dans la protection de certaines ressources. L'expérience utilisateur est très important et est très personnalisée.

Voici un test simple méthode JQuery qui finira par tester si l'utilisateur a fourni les informations d'identification appropriées dans un formulaire:

$(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;
  });
});

Si ils ne sont pas autorisés à accéder à /privateau moment où ils devraient voir juste la boîte d'alerte. Cependant, sur Firefox, un navigateur fourni formulaire de connexion apparaît (pour réessayer avec de nouvelles informations d'identification). Safari ne pas faire cela.

Nous voulons contrôler complètement l'expérience avec les formulaires personnalisés, des fondus, des transitions, etc. Comment puis-je empêcher Firefox par défaut de la boîte de montre? (Si ce sera une question lorsque nous avons test pour IE, j'aimerais entendre des solutions, là aussi.)

source d'informationauteur Ian Terrell | 2009-05-30