У моїй веб-програмі є сторінка входу, яка подає дані автентифікації за допомогою виклику AJAX. Якщо користувач вводить правильні ім’я користувача та пароль, все в порядку, але якщо ні, трапляється таке:
- Веб-сервер визначає, що, хоча запит включав добре сформований заголовок авторизації, облікові дані в заголовку не успішно аутентифікуються.
- Веб-сервер повертає код стану 401 і включає один або кілька заголовків автентифікації WWW із переліком підтримуваних типів автентифікації.
- Браузер виявляє, що відповідь на мій виклик об’єкта XMLHttpRequest - це 401, і відповідь включає заголовки WWW-Authenticate. Потім з’являється діалогове вікно автентифікації з проханням ввести ім’я користувача та пароль.
Це все добре до кроку 3. Я не хочу, щоб з’являлося діалогове вікно, я хочу обробляти відповідь 401 у моїй функції зворотного виклику AJAX. (Наприклад, відображаючи повідомлення про помилку на сторінці входу.) Я, звичайно, хочу, щоб користувач повторно ввів своє ім’я користувача та пароль, але я хочу, щоб вони бачили мою дружню, обнадійливу форму входу, а не негарну за замовчуванням браузера. діалогове вікно автентифікації.
До речі, я не маю ніякого контролю над сервером, тому повернення користувацького коду стану (тобто щось інше, ніж 401) не є варіантом.
Чи є спосіб заблокувати діалогове вікно автентифікації? Зокрема, чи можу я вимкнути діалогове вікно «Необхідна автентифікація» у Firefox 2 або пізнішої версії? Чи є спосіб заблокувати діалогове вікно Підключення до [хосту] в IE 6 та пізніших версіях?
Редагувати
Додаткову інформацію від автора (18 вересня):
Я повинен додати, що справжньою проблемою, що з’являється діалогове вікно автентифікації браузера, є те, що воно надає недостатньо інформації для користувача.
Користувач щойно ввів ім’я користувача та пароль через форму на сторінці входу, він вважає, що ввів їх обидва правильно, і натиснув кнопку подати або натиснув Enter. Він сподівається, що його переведуть на наступну сторінку або, можливо, скажуть, що він ввів свою інформацію неправильно, і йому слід спробувати ще раз. Однак натомість перед ним з’являється несподіване діалогове вікно.
Діалог не має ніякого підтвердження того факту , що він просто зробив ввести ім'я користувача і пароль. У ньому чітко не вказано, що виникла проблема, і що йому слід спробувати ще раз. Натомість діалогове вікно надає користувачеві загадкову інформацію на зразок "Сайт каже:" [сфера] ". Де [царство] - це коротка назва сфери, яку любив би лише програміст.
Дизайнери веб-браузерів беруть до уваги: ніхто не запитає, як придушити діалогове вікно автентифікації, якби саме діалогове вікно було просто більш зручним для користувача. Вся причина того, що я роблю форму для входу в тому , що наша команда управління продуктом справедливо вважає Діалоги аутентифікації браузерів буде жахливо.