Moja aplikacja internetowa ma stronę logowania, która przesyła dane uwierzytelniające za pośrednictwem wywołania AJAX. Jeśli użytkownik wprowadzi poprawną nazwę użytkownika i hasło, wszystko jest w porządku, ale jeśli nie, dzieje się tak:
- Serwer WWW stwierdza, że chociaż żądanie zawierało poprawnie sformułowany nagłówek Authorization, poświadczenia w nagłówku nie są pomyślnie uwierzytelniane.
- Serwer sieciowy zwraca kod stanu 401 i zawiera jeden lub więcej nagłówków WWW-Authenticate wymieniających obsługiwane typy uwierzytelniania.
- Przeglądarka wykrywa, że odpowiedź na moje wywołanie obiektu XMLHttpRequest to 401, a odpowiedź zawiera nagłówki WWW-Authenticate. Następnie pojawia się okno dialogowe uwierzytelniania z pytaniem o nazwę użytkownika i hasło.
Do kroku 3 wszystko jest w porządku. Nie chcę, aby pojawiło się okno dialogowe, chcę obsłużyć odpowiedź 401 w mojej funkcji wywołania zwrotnego AJAX. (Na przykład wyświetlając komunikat o błędzie na stronie logowania). Oczywiście chcę, aby użytkownik ponownie wprowadził swoją nazwę użytkownika i hasło, ale chcę, aby zobaczył mój przyjazny, uspokajający formularz logowania, a nie brzydki, domyślny okno dialogowe uwierzytelniania.
Nawiasem mówiąc, nie mam kontroli nad serwerem, więc zwrócenie przez niego niestandardowego kodu stanu (tj. Czegoś innego niż 401) nie jest opcją.
Czy jest jakiś sposób, aby ukryć okno dialogowe uwierzytelniania? W szczególności, czy mogę pominąć okno dialogowe Wymagane uwierzytelnienie w przeglądarce Firefox 2 lub nowszej? Czy istnieje sposób na pominięcie okna dialogowego Połącz z [hostem] w przeglądarce IE 6 i nowszych?
Edytuj
Dodatkowe informacje od autora (18 września):
Powinienem dodać, że prawdziwym problemem z wyskakującym oknem dialogowym uwierzytelniania przeglądarki jest to, że podaje ono użytkownikowi niewystarczające informacje.
Użytkownik właśnie wprowadził nazwę użytkownika i hasło za pośrednictwem formularza na stronie logowania, uważa, że wpisał je poprawnie i kliknął przycisk przesyłania lub wcisnął Enter. Oczekuje, że zostanie przeniesiony na następną stronę lub może powiedziano mu, że wprowadził nieprawidłowe informacje i powinien spróbować ponownie. Jednak zamiast tego jest wyświetlane nieoczekiwane okno dialogowe.
Okno nie ma potwierdzenia faktu, że właśnie zrobił wprowadzić nazwę użytkownika i hasło. Nie stwierdza jasno, że wystąpił problem i że powinien spróbować ponownie. Zamiast tego okno dialogowe przedstawia użytkownikowi tajemnicze informacje, takie jak „Witryna mówi: ' [dziedzina] '”. Gdzie [dziedzina] to krótka nazwa dziedziny, którą może pokochać tylko programista.
Uwaga projektanci przeglądarek internetowych: nikt nie zapytałby, jak pominąć okno dialogowe uwierzytelniania, gdyby samo okno dialogowe było po prostu bardziej przyjazne dla użytkownika. Cały powód, że robię formularz logowania jest to, że nasz zespół zarządzania produktem słusznie uważa dialogi uwierzytelniania przeglądarek być okropne.