2011-11-12 41 views
3

我正在實施與我的網站「測試模式」,這將禁止訪問某些頁面,而他們正在建設中,使他們只能訪問管理員進行私人測試。我打算使用401狀態代碼,因爲的頁面存在,但它們不允許使用它,它們可能會也可能不會被驗證,但只有某些用戶(基本上我)仍然可以訪問頁。修改與HTTP狀態碼一起發送的文本可以接受嗎?

我想知道的是,HTTP/1.1 401部分之後的文本是否重要?它是否必須是Unauthorized,或者它基本上可以是任何你想要放在它後面,只要401仍然適合這個錯誤?我想發送諸如Temporarily Unavailable之類的消息來指示該頁面通常對所有訪問者可用,但正在進行重建並暫時不可用。我應該這樣做嗎?

+1

您可以更改該文本,但大多數用戶不會看到它。圖形瀏覽器將在響應正文中顯示HTML,而不是HTTP響應頭的第一行中的原因碼。所以你的改變大多隻會在你用'curl - head'或'telnet'測試服務器時才重要。 –

+0

對於這種情況下,我寧願使用503:http://stackoverflow.com/a/1701622/39321 – Svish

+0

我曾想過403,但503實際上更正確。 401意味着:如果您提供了正確的憑據,則可能能夠訪問資源。例如,缺少密碼或某個安全令牌。由於密碼不會幫助,401不適用。谷歌爲「解釋錯誤401」,「錯誤403」和「錯誤503」。 – gnasher729

回答

3

您可以更改它們。

狀態消息(技術上稱爲「原因短語」)只是建議,「可以在不影響協議的情況下進行更改」。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1.1

然而,你應該:-)仍能正常使用的代碼,並給予有意義的信息。如果你的條件是RFC所說的401應該是什麼,那麼只能使用401。

+0

特別是,401不是「臨時不可用」的正確狀態。 –

0

您可以更改文本(很少有http客戶端會注意它),但最好使用最適用的響應代碼。最後,說明失敗的原因是各種響應代碼是如何使用的。

也許這適合:

404找不到請求的資源無法被找到,但在未來可能會 再次可用[2]客戶的後續請求 是允許的。

+0

我一開始想到了403,但是在管理員的情況下,身份驗證將解決問題以及它唯一的臨時性,403狀態指定「請求不應該重複」。我覺得這意味着它不應該重複。沒有? – animuson

+0

然後,您應該:404找不到 找不到請求的資源,但可能在將來再次提供。[2]客戶的後續請求是允許的。 –

0

是的,原因詞組可以改變。它不會影響消息的含義。

但是如果你需要說「暫時不可用」,你需要使它成爲5xx(服務器)代碼。 503似乎就在這裏(見RFC 2616, Section 10.5.4)。

相關問題