2017-04-18 1 views
-2

J'ai un index.html qui charge 3 blocs de contenu en utilisant 3 requêtes $.load(...) différentes. Lorsque j'utilise l'authentification http de base, le login et le pass sont demandés 4 fois. 1 sur le chargement de la page, et 1 pour chaque contenu.

Comment puis-je conserver la connexion, SANS la transmettre sur le $.load url? (à des fins de sécurité).

<div id="header"></div> 
    <div id="maindiv"></div> 
    <div id="footer"></div> 

    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("#header").load("?cmd=header"); 
     $("#maindiv").load("?cmd=viewconfig"); 
     $("#footer").load("?cmd=footer"); 
    }); 
    </script> 
+1

Que voulez-vous dire par l'authentification HTML? – Hulothe

+0

mon mauvais, je voulais dire base http auth. Je le réparerai. –

+1

le client n'a aucun contrôle sur ledit popup. javascript ne peut pas le faire arrêter. –

Répondre

2

Vous devez modifier la réponse à un 401 code d'état http au lieu de l'en-tête http d'autorisation. Alors vous pouvez attraper ces réponses et montrer votre propre fenêtre de dialogue de connexion.

Dans mon exemple, tous les statuts de résultat d'appel Ajax JQuery sont vérifiés pour le 401 du code et la première occurrence montrera la boîte de dialogue:

var loginFormShown = false; 
$.ajaxSetup({ 
    statusCode: { 
    401: function(xhr) { 
     if(!loginFormShown) { 
     console.log('Show login form popup', xhr.responseText); 
     loginFormShown = true; 
     } 
    } 
    } 
}); 
$(document).ready(function() { 
    $("#header").load("?cmd=header"); 
    $("#maindiv").load("?cmd=viewconfig"); 
    $("#footer").load("?cmd=footer"); 
});