2011-10-20 42 views
5

任何人都可以解釋如何http://user:[email protected]身份驗證的作品?瀏覽器是否發送Authorization標頭,user:pass是base-64編碼?http:// user:[email protected]身份驗證如何工作?

我在Chrome開發人員工具中打開了網絡控制檯,並且在請求諸如http://user:[email protected]之類的請求時,我看不到Authorization標頭被添加。

我很好奇瀏覽器如何在URL前使用user:[email protected]來發送密碼。

+3

這只是授權標題。我不知道Chrome是如何做到這一點的,但通過Firefox它檢查網站是否要求身份驗證(在請求中),如果不是,就會向您發出警告:「您即將登錄到網站」stackoverflow。 com「與用戶名」用戶「,但網站不需要認證。這可能是欺騙你的企圖。 「stackoverflow.com」是您想要訪問的網站嗎?然後它會[是]刪除身份驗證詳細信息或[否]中止請求。所以,除非你有方便的授權網站,否則*不會*看到標題。 –

回答

3

要檢查標題,您需要針對需要驗證的服務器進行測試。客戶端將不會發送任何Authorization標頭,直到服務器請求爲止,因爲客戶端不知道服務器需要什麼認證方法(基本或摘要)。


HTTP認證在兩個請求完成:

首先,如果沒有任何Authorization報頭的請求被髮送。 然後服務器迴應一個WWW-Authenticate,告訴客戶如何進行身份驗證。這包括領域名稱和身份驗證方法(同樣,這是基礎或摘要)

客戶端然後發送一個新的請求並附加一個Authorization標頭。在basic authentication的情況下,這頭只是user:pass base64編碼,就像你說:

Authorization: Basic dXNlcjpwYXNz 

現在的密碼是在運輸過程中,除非你正在使用HTTPS。更好的選擇是digest authentication,其中WWW-AuthenticateAuthorization的內容最好由wikipedia article解釋。 :)