Se você criar uma API REST usando Basic authentication
, não deseja que o navegador exiba o pop-up de autenticação básica se o usuário digitar o nome de usuário / senha incorretos em seu front-end, fazendo com que a chamada AJAX para o back-end “falhe”.
Se você acessar sua API REST sem nenhuma credencial (ou incorreta), o servidor responderá com um 401
código de status e um WWW-Authenticate
cabeçalho como este:
curl -I http://localhost/host/events
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="SendRegning"
(...)
Se seu back-end servir para isso, alguns navegadores (MSIE e Chrome) mostrarão um pop-up como este:
Você não quer isso, então o que fazer?
Acabamos ajustando o Apache, usando a diretiva Header :
Header always edit WWW-Authenticate ^Basic SR_Basic
Isso significa: edite o valor do cabeçalho da resposta (se existir) e, se começar com Basic, mude para .WWW-Authenticate
Basic
SR_Basic
Se você quiser uma solução substituta, pode procurar uma específica , como esta:User-Agent
BrowserMatch SendRegning/1.0 keep_auth
e adicione uma condição à diretiva anterior:
Header always edit WWW-Authenticate ^Basic SR_Basic env=!keep_auth
Isso significa que se você “identificar” seu navegador assim:
curl -I -A "SendRegning/1.0" http://localhost/host/events
você obterá o cabeçalho padrão, não alterado novamente.WWW-Authenticate
Requisitos
Você precisa carregar o headers_module
para que isso funcione e você e precisa de pelo menos Apache 2.2.4.
BrowserMatch
precisa setenvif_module
ser carregado.
aviso Legal
Não usamos SSL em nosso ambiente de desenvolvimento, portanto, certifique-se de criptografar todo o tráfego ao fazer a autenticação básica em liberdade.