2012-12-19 64 views
2

我在我的網站上有受限制的頁面,例如URL爲http://example.com/some-private-article.html,它顯示一個登錄頁面,您必須輸入憑據才能看到該頁面。自定義登錄頁面的正確http狀態碼是什麼?

信息沒有消失,它在那裏,但它的訪問被拒絕。

我想給一個401響應,但沒有HTTP認證/消化而規範說,這是必需的,在登錄過程的處理服務器端用PHP。

什麼是這種頁面的正確HTTP狀態碼?

回答

-1

你一定要看看這個http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html它定義每個響應代碼及其含義。

爲了您的目的,雖然我可能會建議401 - 未經授權。


編輯:對,如果你正在做的表格形式的驗證,然後第二個想法無論是302 - 發現或307 - 臨時重定向到登錄頁面可能會是一個合理的反應,你正在做自己的身份驗證。

+0

402意味着「需要付款」而不是「未經授權」。 「未經授權」是401,並且說「響應必須包含一個WWW-Authenticate標頭」,這是對此的錯誤認證類型,並已被問題明確排除。 – Quentin

+0

D'oh,意思是401,錯字......編輯答案,然後再讀一點問題。 – phuzi

1

我會做這種方式:

  1. 重定向未授權的用戶在登錄頁面(其中有不同 URL)。
  2. 對於有權訪問的授權用戶,您的私人文章URL 200確定。
  3. 而403代表無權訪問的授權用戶。
0

按照HTTP status code spec我應該使用403或404自定義登錄頁面,如果用戶沒有訪問已經(在沒有登錄或沒有所要求的權限),並具有登錄到網頁通過表單,外部客戶端必須通過發送POST請求(通過HTTPS連接)與憑據來登錄,然後使用會話密鑰存儲cookie,以便在重新加載頁面後查看受限制的內容。另一方面,如果我想通過GET類型請求爲腳本提供登錄頁面,或者爲不需要Cookie的客戶端提供登錄頁面,或者可以通過類似https://username:[email protected]/some-private-article.html這樣的URL登錄,那麼我必須使用HTTP認證,並且沒有關於瀏覽器中登錄彈出窗口的選擇,在這種情況下,適用於使用401 HTTP狀態代碼。

我希望我有這個權利,如果不是,那麼請糾正我。