Как указывали другие, единственный способ изменить поведение браузера - убедиться, что ответ либо не содержит код состояния 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>