La mia applicazione web ha una pagina di accesso che invia le credenziali di autenticazione tramite una chiamata AJAX. Se l'utente inserisce il nome utente e la password corretti, va tutto bene, ma in caso contrario, accade quanto segue:
- Il server Web determina che, sebbene la richiesta includesse un'intestazione di autorizzazione ben formata, le credenziali nell'intestazione non vengono autenticate correttamente.
- Il server web restituisce un codice di stato 401 e include una o più intestazioni WWW-Authenticate che elencano i tipi di autenticazione supportati.
- Il browser rileva che la risposta alla mia chiamata sull'oggetto XMLHttpRequest è un 401 e la risposta include le intestazioni WWW-Authenticate. Quindi si apre una finestra di dialogo di autenticazione che chiede, di nuovo, il nome utente e la password.
Va tutto bene fino al passaggio 3. Non voglio che la finestra di dialogo venga visualizzata, voglio gestire la risposta 401 nella mia funzione di callback AJAX. (Ad esempio, visualizzando un messaggio di errore nella pagina di accesso.) Voglio che l'utente inserisca nuovamente il nome utente e la password, ovviamente, ma voglio che vedano il mio modulo di accesso amichevole e rassicurante, non il brutto, predefinito del browser finestra di dialogo di autenticazione.
Per inciso, non ho alcun controllo sul server, quindi fargli restituire un codice di stato personalizzato (cioè qualcosa di diverso da un 401) non è un'opzione.
C'è un modo per sopprimere la finestra di dialogo di autenticazione? In particolare, posso sopprimere la finestra di dialogo Autenticazione richiesta in Firefox 2 o versioni successive? Esiste un modo per sopprimere la finestra di dialogo Connetti a [host] in IE 6 e versioni successive?
Modifica
Informazioni aggiuntive dall'autore (18 settembre):
dovrei aggiungere che il vero problema con la finestra di dialogo di autenticazione del browser che si apre è che fornisce informazioni insufficienti all'utente.
L'utente ha appena inserito un nome utente e una password tramite il modulo nella pagina di accesso, crede di averli digitati entrambi correttamente e ha fatto clic sul pulsante di invio o di invio. La sua aspettativa è che venga portato alla pagina successiva o forse gli venga detto che ha inserito le sue informazioni in modo errato e che dovrebbe riprovare. Tuttavia, gli viene invece presentata una finestra di dialogo inaspettata.
La finestra di dialogo fa nessun riconoscimento del fatto che ha appena fatto inserire un nome utente e una password. Non indica chiaramente che si è verificato un problema e che dovrebbe riprovare. Invece, la finestra di dialogo presenta all'utente informazioni criptiche come "Il sito dice: ' [realm] '." Dove [realm] è un nome di reame breve che solo un programmatore potrebbe amare.
I progettisti di Web Broswer prendono nota: nessuno chiederebbe come sopprimere la finestra di dialogo di autenticazione se la finestra di dialogo stessa fosse semplicemente più user-friendly. L' intera ragione per cui sto compilando un modulo di accesso è che il nostro team di gestione del prodotto considera giustamente orribili le finestre di dialogo di autenticazione dei browser.