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

J'écris certaines fonctionnalités dynamiques côté navigateur et j'utilise HTTP Basic Auth pour protéger certaines ressources. L'expérience utilisateur est très importante et très personnalisée.

Voici une méthode JQuery de test simple qui va éventuellement tester si un utilisateur a fourni les informations d'identification correctes 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 boîte d'alerte. Toutefois, sur Firefox, un formulaire de connexion fourni par le navigateur apparaît (pour réessayer avec de nouvelles informations d'identification). Safari ne le fait pas.

Nous voulons contrôler complètement l'expérience avec des formes personnalisées, des fondus, des transitions, etc. Comment puis-je garder la boîte par défaut de Firefox? (Si cela sera un problème lorsque nous testons IE, j'aimerais également y entendre des solutions).

Dans le cas où vous ne l'avez pas lu:

Comment puis-je supprimer la boîte de dialogue d'authentification du navigateur?

Ne semble pas prometteur 🙂

La solution consiste à définir l'en WWW-Authenticate tête WWW-Authenticate vers autre chose que Basic . Par exemple, définissez-le sur:

 WWW-Authenticate: None 

ou

 WWW-Authenticate: FormBased 

Si vous utilisez la connexion par formulaire. Ensuite, le navigateur ne vous montrera pas une fenêtre de connexion.

Malheureusement, je frappe le même problème ici.

À mon avis, les navigateurs ne devraient pas donner une invite pour un xmlhttprequest. Je souhaite vraiment que quelqu'un pousse que les gens veulent vraiment passer à jQuery pour leurs besoins d'authentification.

Eh bien, voici l'aide que je peux vous donner, j'ai trouvé cette chose jQuery Digest, je n'ai aucune idée de ce qu'elle fait vraiment ou de quoi que ce soit, mais si quelqu'un pourrait prendre ce code de la bonne façon, nous pourrions avoir un système d'authentification jquery digest.

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

Je pense que avec cette nouvelle option AuthDigestDomain pratique, nous pourrions avoir le script ci-dessus réécrit ou autrement et avoir la zone sécurisée 'liée' ensemble et nous pourrions passer ce problème une fois pour toutes. Eh bien … la meilleure des chances =)