簡體   English   中英

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

[英]How do I keep Firefox from prompting for username/password with HTTP Basic Auth with JQuery AJAX?

我正在編寫一些瀏覽器端動態功能,並使用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時會出現這個問題,我也很樂意聽到那里的解決方案。)

解決方案是將WWW-Authenticate標頭設置為Basic以外的其他標頭。 例如,將其設置為:

WWW-Authenticate: None

要么

WWW-Authenticate: FormBased

如果您使用基於表單的登錄。 然后瀏覽器不會顯示登錄窗口。

不幸的是,我在這里遇到同樣的問題。

在我看來,瀏覽器不應該提示xmlhttprequest。 我真的希望有人會推動這一點,因為人們真的想要轉向jQuery以滿足他們的身份驗證需求。

那么這里是我能給你的幫助,我發現了這個jQuery Digest的東西,我不知道它真正做了什么或者什么,但是如果有人能夠以正確的方式使用這個代碼,我們可以有一個jquery digest auth系統。

https://www.openhub.net/p/digestj

我想用這個方便的新的AuthDigestDomain選項,我們可以重寫上面的腳本或者其他任何東西並將安全區域“鏈接”在一起,我們可以一勞永逸地解決這個問題。 嗯...祝你好運=)

如果你還沒看過:

如何抑制瀏覽器的身份驗證對話框?

看起來不太有希望:)

我找到了這個身份驗證彈出問題的解決方法。

WWW-Authenticate: None

不適合我,但我補充說

'Authorization': 'Basic'

到標題,它就像一個魅力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM