Como evito que o Firefox solicite nome de usuário / senha com autenticação básica HTTP com JQuery AJAX?
Estou escrevendo algumas funcionalidades dinâmicas do navegador e usando o HTTP Basic Auth para proteger alguns recursos. A experiência do usuário é muito importante e é altamente personalizada.
Aqui está um método JQuery de teste simples que eventualmente testará se um usuário forneceu as credenciais corretas em um formulário:
$(document).ready(function() {
$("#submit").click(function() {
var token = Base64.encode($('#username').val() + ':' + $('#password').val());
$.ajax({
url: '/private',
method: 'GET',
async: false,
beforeSend: function(req) {
req.setRequestHeader('Authorization', 'test:password');
},
error: function(request, textStatus, error) {
if (request.status == 401) {
alert('401');
}
}
});
return false;
});
});
Se eles não tiverem permissão para acessar/private
, no momento eles devem ver apenas a caixa de alerta. No entanto, no Firefox, um formulário de login fornecido pelo navegador é exibido (para tentar novamente com novas credenciais). O Safari não faz isso.
Queremos controlar completamente a experiência com formulários personalizados, desaparecimentos, transições etc. Como impedir que a caixa padrão do Firefox seja exibida? (Se isso for um problema quando testamos o IE, eu também adoraria ouvir soluções lá.)