亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何隱藏瀏覽器的身份驗證對話框?

如何隱藏瀏覽器的身份驗證對話框?

米琪卡哇伊 2019-11-26 13:09:16
我的Web應用程序有一個登錄頁面,該頁面通過AJAX調用提交身份驗證憑據。如果用戶輸入正確的用戶名和密碼,則一切正常,但如果不正確,則會發生以下情況:Web服務器確定盡管請求中包含格式正確的Authorization標頭,但標頭中的憑據未成功進行身份驗證。Web服務器返回401狀態代碼,并包括一個或多個列出受支持的身份驗證類型的WWW-Authenticate標頭。瀏覽器檢測到對我對XMLHttpRequest對象的調用的響應是401,并且該響應包括WWW-Authenticate標頭。然后,它會彈出一個身份驗證對話框,再次詢問用戶名和密碼。直到步驟3為止,一切都很好。我不想彈出對話框,我想處理AJAX回調函數中的401響應。(例如,通過在登錄頁面上顯示錯誤消息。)當然,我希望用戶重新輸入用戶名和密碼,但是我希望他們看到我友好的,令人放心的登錄表單,而不是瀏覽器的丑陋默認設置身份驗證對話框。順便說一句,我無法控制服務器,因此讓它返回自定義狀態代碼(即401以外的其他內容)不是一種選擇。有什么辦法可以禁止身份驗證對話框?特別是,我可以在Firefox 2或更高版本中取消“需要身份驗證”對話框嗎?有什么方法可以禁止IE 6及更高版本中的“連接到[主機]”對話框?編輯作者提供的其他信息(9月18日):我應該補充一點,彈出的瀏覽器身份驗證對話框的真正問題在于,它無法為用戶提供足夠的信息。用戶剛剛通過登錄頁面上的表單輸入了用戶名和密碼,他認為自己已經正確鍵入了二者,并且單擊了提交按鈕或按Enter。他的期望是他將被帶到下一頁,或者被告知他輸入的信息不正確,應重試。但是,相反,他看到一個意外的對話框。對話是沒有的,他只是一個事實確認沒有輸入用戶名和密碼。它沒有明確指出存在問題,他應該再試一次。而是,對話框為用戶提供了諸如“網站說:' [領域] '”之類的神秘信息。其中[realm]是只有程序員才能喜歡的簡短領域名稱。Web瀏覽器設計師注意到:如果對話框本身只是更易于使用,則沒人會問如何隱藏身份驗證對話框。我填寫登錄表單的全部原因是,我們的產品管理團隊正確地認為瀏覽器的身份驗證對話框很糟糕。
查看完整描述

3 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

我在這里遇到了相同的問題,并且我公司的后端工程師實施了一種行為,這顯然是一種好習慣:當對URL的調用返回401時,如果客戶端設置了標頭X-Requested-With: XMLHttpRequest,則服務器將www-authenticate標頭丟棄在響應。

副作用是默認身份驗證彈出窗口不會出現。

確保您的API調用的X-Requested-With標頭設置為XMLHttpRequest。如果是這樣,除了按照此良好做法更改服務器行為外,沒有任何其他事情可做。


查看完整回答
反對 回復 2019-11-26
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

同時滿足以下兩個條件時,瀏覽器會彈出登錄提示:

  1. HTTP狀態為4xx

  2. WWW-Authenticate 標頭出現在響應中

如果可以控制HTTP響應,則可以WWW-Authenticate從響應中刪除標頭,并且瀏覽器不會彈出登錄對話框。

如果您無法控制響應,則可以設置代理以WWW-Authenticate從響應中過濾出標頭。

據我所知(如果我錯了,請隨時糾正我),一旦瀏覽器收到WWW-Authenticate標頭,就無法阻止登錄提示。


查看完整回答
反對 回復 2019-11-26
  • 3 回答
  • 0 關注
  • 718 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號