1

我對Web瀏覽器的基本身份驗證有點困惑。我曾經認爲Web瀏覽器在收到前一個響應中的HTTP 401狀態後纔會發送Authorization標頭。不過,Chrome看起來會隨後向每個請求發送授權標頭。它具有我從我的網站上爲401響應而輸入的數據,並隨每條消息一起發送(根據Chrome和我的網絡服務器附帶的開發人員工具)。那是預期的行爲?是否有一些標題我應該用我的401來推斷授權的東西不應該被緩存?我目前正在使用WWW-Authenticate標頭。瞭解基本身份驗證與401

回答

7

這是爲RFC 2617 (Section 2)定義瀏覽器的預期行爲:

A client SHOULD assume that all paths at or deeper than the depth of 
the last symbolic element in the path field of the Request-URI also 
are within the protection space specified by the Basic realm value of 
the current challenge. A client MAY preemptively send the 
corresponding Authorization header with requests for resources in 
that space without receipt of another challenge from the server. 
Similarly, when a client sends a request to a proxy, it may reuse a 
userid and password in the Proxy-Authorization header field without 
receiving another challenge from the proxy server. See section 4 for 
security considerations associated with Basic authentication. 

據我所知,基本HTTP認證沒有進行註銷/重新認證的能力。這同時缺乏HTTP基本認證的安全性,這就是爲什麼大多數網站現在都使用表單和Cookie進行認證的解決方案。

+0

你是對的。 '註銷'在基本身份驗證的範圍內是沒有意義的,因爲安全令牌在每個請求*中發送*。實質上,每個HTTP請求都是單獨驗證的。您可以強制瀏覽器停止身份驗證,例如,請參閱http://stackoverflow.com/questions/5957822/how-to-clear-basic-authentication-details-in-chrome。 –

1

RFC 2617

如果事先請求已被授權,則 相同的憑證可以是用於該 保護空間內的所有其它請求一段由 認證方案,參數確定的時間重新使用和/或用戶偏好。

從我的經驗看,瀏覽器會自動發送基本憑據以供後續請求使用。它可以防止爲額外的資源做額外的往返。