Tôi đang viết một số chức năng động bên trình duyệt và sử dụng Xác thực cơ bản HTTP để bảo vệ một số tài nguyên. Trải nghiệm người dùng rất quan trọng và được tùy chỉnh cao.Làm thế nào để giữ cho Firefox không cho tên người dùng/mật khẩu với HTTP cơ bản Auth với JQuery AJAX?
Dưới đây là một phương pháp JQuery kiểm tra đơn giản mà cuối cùng sẽ kiểm tra nếu người dùng đã cung cấp các chứng chỉ đúng trong một hình thức:
$(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;
});
});
Nếu họ không được phép để truy cập /private
, tại thời điểm này họ sẽ thấy chỉ hộp cảnh báo. Tuy nhiên, trên Firefox, biểu mẫu đăng nhập do trình duyệt cung cấp bật lên (để thử lại bằng thông tin đăng nhập mới). Safari không làm điều này.
Chúng tôi muốn kiểm soát hoàn toàn trải nghiệm với biểu mẫu tùy chỉnh, mờ dần, chuyển tiếp, v.v. Làm cách nào để giữ hộp mặc định của Firefox không hiển thị? (. Nếu đây sẽ là một vấn đề khi chúng tôi kiểm tra cho IE, tôi muốn nghe ý kiến các giải pháp đó, quá)
Lưu ý việc theo dõi tại http://stackoverflow.com/questions/928967/can-i-coerce-apache-into-not-including-a-www-authenticate-header-for-failed-http. –