Como han señalado otros, la única forma de cambiar el comportamiento del navegador es asegurarse de que la respuesta no contenga un código de estado 401 o, si lo tiene, no incluya el WWW-Authenticate: Basic
encabezado. Dado que cambiar el código de estado no es muy semántico y no es deseable, un buen enfoque es eliminar el WWW-Authenticate
encabezado. Si no puede o no desea modificar la aplicación de su servidor web, siempre puede servirla o usarla como proxy a través de Apache (si aún no está usando Apache).
Aquí hay una configuración para que Apache reescriba la respuesta para eliminar el encabezado WWW-Authenticate IFF que la solicitud contiene contiene el encabezado X-Requested-With: XMLHttpRequest
(que está configurado de forma predeterminada por los principales marcos de Javascript como JQuery / AngularJS, etc.) Y la respuesta contiene el encabezado WWW-Authenticate: Basic
.
Probado en Apache 2.4 (no estoy seguro de si funciona con 2.2). Esto depende del mod_headers
módulo que se está instalando. (En Debian / Ubuntu sudo a2enmod headers
y reinicie 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>