当前位置:  开发笔记 > 编程语言 > 正文

如何使用JQuery AJAX使用HTTP Basic Auth阻止Firefox提示用户名/密码?

如何解决《如何使用JQueryAJAX使用HTTPBasicAuth阻止Firefox提示用户名/密码?》经验,为你挑选了1个好方法。

我正在编写一些浏览器端动态功能,并使用HTTP Basic Auth来保护一些资源.用户体验非常重要,并且高度定制.

这是一个简单的测试JQuery方法,最终将测试用户是否在表单中提供了正确的凭据:

$(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;
  });
});

如果不允许他们访问/private,那么他们应该只看到警告框.但是,在Firefox上,会弹出一个浏览器提供的登录表单(使用新凭据重试).Safari不会这样做.

我们希望通过自定义表单,淡入淡出,转换等完全控制体验.如何防止Firefox的默认框显示?(如果我们测试IE时会出现这个问题,我也很乐意听到那里的解决方案.)



1> lanoxx..:

解决方案是将WWW-Authenticate标头设置为其他内容Basic.例如,将其设置为:

WWW-Authenticate: None

要么

WWW-Authenticate: FormBased

如果您使用基于表单的登录.然后浏览器不会显示登录窗口.


请在此处查看有关如何使用Java和**Spring Security**解决此问题的解决方案:http://stackoverflow.com/questions/19079687/rest-call-on-expired-session-http-401-response-causes -browser到显示登陆/ 19102959#19102959
推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有