В моем веб-приложении есть страница входа, которая отправляет учетные данные для аутентификации через вызов AJAX. Если пользователь вводит правильное имя пользователя и пароль, все в порядке, но если нет, происходит следующее:
- Веб-сервер определяет, что, хотя запрос включал правильно сформированный заголовок авторизации, учетные данные в заголовке не проходят успешную аутентификацию.
- Веб-сервер возвращает код состояния 401 и включает один или несколько заголовков WWW-Authenticate, в которых перечислены поддерживаемые типы аутентификации.
- Браузер обнаруживает, что ответ на мой вызов объекта XMLHttpRequest - это 401, а ответ включает заголовки WWW-Authenticate. Затем появляется диалоговое окно аутентификации, снова запрашивающее имя пользователя и пароль.
Все в порядке до шага 3. Я не хочу, чтобы диалоговое окно всплывало, я хочу обработать ответ 401 в моей функции обратного вызова AJAX. (Например, отображая сообщение об ошибке на странице входа в систему.) Я хочу, чтобы пользователь повторно ввел свое имя пользователя и пароль, конечно, но я хочу, чтобы они видели мою дружелюбную, обнадеживающую форму входа в систему, а не уродливую форму браузера по умолчанию. диалог аутентификации.
Между прочим, у меня нет контроля над сервером, поэтому он не может возвращать пользовательский код состояния (то есть что-то кроме 401).
Есть ли способ подавить диалог аутентификации? В частности, могу ли я подавить диалоговое окно «Требуется аутентификация» в Firefox 2 или новее? Есть ли способ отключить диалоговое окно «Подключение к [хосту] » в IE 6 и более поздних версиях?
Изменить
Дополнительная информация от автора (18 сентября):
я должен добавить, что настоящая проблема с появлением диалогового окна аутентификации браузера заключается в том, что он не предоставляет пользователю недостаточной информации.
Пользователь только что ввел имя пользователя и пароль через форму на странице входа, он считает, что ввел их правильно, и он нажал кнопку отправки или клавишу ввода. Он ожидает, что его переместят на следующую страницу или, возможно, ему скажут, что он ввел свои данные неправильно и должен повторить попытку. Однако вместо этого ему предоставляется неожиданное диалоговое окно.
Диалог не подтверждает того факта, что он только что ввел имя пользователя и пароль. В нем нет четкого указания на то, что возникла проблема и что он должен попробовать еще раз. Вместо этого диалоговое окно представляет пользователю загадочную информацию вроде «На сайте написано: ' [область] '». Где [область] - это короткое имя области, которое может полюбить только программист.
Дизайнеры веб-браузеров принимают к сведению: никто не стал бы спрашивать, как подавить диалог аутентификации, если бы сам диалог был просто более удобным для пользователя. Вся причина того, что я делаю форму для входа в том , что наша команда управления продуктом справедливо считает Диалоги аутентификации браузеров будет ужасно.