Как уже отмечали другие, единственный способ изменить поведение браузера - убедиться, что ответ не содержит код состояния 401 или, если он есть, не содержит заголовок WWW-Authenticate: Basic
. Поскольку изменение кода состояния не очень семантическое и нежелательное, хорошим подходом является удаление заголовка WWW-Authenticate
. Если вы не можете или не хотите изменять приложение веб-сервера, вы всегда можете обслужить его или прокси через Apache (если вы еще не используете Apache).
Вот конфигурация для Apache, чтобы переписать ответ для удаления заголовка WWW-Authenticate. IFF, содержащийся в запросе, содержит заголовок X-Requested-With: XMLHttpRequest
(который устанавливается по умолчанию основными платформами Javascript, такими как JQuery / AngularJS и т. Д. ) И ответ содержит заголовок WWW-Authenticate: Basic
.
Проверено на Apache 2.4 (не уверен, работает ли он с 2.2).
Это зависит от установленного модуля mod_headers
.
(В Debian / Ubuntu sudo a2enmod headers
и перезапустите Apache)
<Location />
# Make sure that if it is an XHR request,
# we don't send back basic authentication header.
# This is to prevent the browser from displaying a basic auth login dialog.
Header unset WWW-Authenticate "expr=req('X-Requested-With') == 'XMLHttpRequest' && resp('WWW-Authenticate') =~ /^Basic/"
</Location>