[英]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.