Мне нужно отправить запрос на авторизацию, используя дайджест-аутентификацию. Я успешно реализовал это с помощью jquery. Однако, когда я получаю ошибку 401, дайджест аутентификации всплывающее окно браузера открывается, а обратный вызов ошибки jquery ajax не вызывается.
Как запретить браузеру вызывать всплывающее окно авторизации Digest и обрабатывать ошибку 401 с помощью Jquery?
Ответы (2)
Измените ответ сервера, чтобы он не возвращал 401. Вместо этого верните код 200 и обработайте его в своем клиенте jQuery. Измените метод, который вы используете для авторизации, на пользовательское значение в заголовке. Браузеры отобразят всплывающее окно для Basic и Digest. Вы должны изменить это как на клиенте, так и на сервере.
headers : {
"Authorization" : "BasicCustom"
}
Посмотрите здесь: Используйте базовую аутентификацию с помощью jQuery и Ajax
"По этому вопросу я просто хочу знать, использую ли я дайджест-проверку подлинности, как я могу предотвратить появление всплывающих окон в браузере."
К сожалению, это невозможно. Для всех событий запросов Ajax (loadstart
, load
, loadend
, progress
, error
, abort
, timeout
) обработчик и обработчик событий onreadystatechange
только loadstart
запускается до всплывающего окна браузера для дайджеста (на самом деле он запускается еще до того, как сервер извлекает запрос).
Таким образом, с точки зрения JavaScript на стороне браузера, перед всплывающим окном дайджеста ничего не вызывается, а это значит, что мы ничего не можем сделать, чтобы предотвратить всплывающее окно.