第4章 返回結果的HTTP狀態碼 HTTP協議常用的狀態碼

狀態碼告知從服務端返回來的請求結果

1.狀態碼種類

類別 原因短語
1XX Informational(信息性狀態碼) 接收的請求正在處理
2XX Success(成功狀態碼) 請求成功
3XX Redirection(重定向狀態碼) 需要進行額外的操作以完成請求
4XX Client Error(客戶端錯誤狀態碼) 服務器無法處理請求(客戶端請求出錯)
5XX Server Error(服務端錯誤狀態碼) 服務器處理請求出錯

2. 2XX 成功

2XX 的響應結果表示客戶端的請求被服務端正常處理了。

  • 200 OK , 客戶端發出的請求被服務端正常處理了。(HEAD請求成功也會返回200)
  • 204 Not Content ,客戶端發出的請求被服務端正常處理了,但是報文中並沒有返回實體的主體部分,也不允許返回任何實體的主體。
  • 206 Partial Content ,客戶端發出的範圍請求被服務端正常處理。響應報文中包含請求頭部Range字段中指定的部分。

3. 3XX 重定向

3XX 的響應結果表示瀏覽器需要作出某些處理來以正確的處理請求

  • 301 Move Permanently
    永久重定向,該狀態碼錶示請求的 URI 資源已被分配了新的URI,以後都應該使用資源現在所指的URI。如果資源對應的URI被存爲了書籤,這時應該按照頭部字段 Location 重新保存URI。
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 21 Mar 2017 03:28:23 GMT
Content-Type: text/html
Content-Length: 178
Connection: close
Location: https://xx.com.bd/
X-Powered-By: EasyEngine 3.7.4

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
  • 302 Found
    臨時重定向,該狀態碼錶示請求的資源已經分配了一個新的URI,希望用戶可以訪問新URI。
    與301代碼相似,但是302代表的意思是這次分配是臨時性的,之後還可能將這個資源分配爲其他URI,如果用戶將此URI存爲書籤,那麼客戶端不會根據頭部字段Location中的值更新書籤,而是仍然保留返回302狀態碼的頁面對應的URI。
HTTP/1.1 302 Found
Content-Type: text/html; charset=iso-8859-1
Content-Length: 208
Connection: close
Date: Tue, 21 Mar 2017 03:34:42 GMT
Server: Apache
Location: http://www.xxx.com

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://www.xxx.com">here</a>.</p>
</body></html>
  • 303 See Other
    該狀態碼錶示由於被請求的資源還有另一個URI,應使用GET方法定向獲取此資源。
GET / HTTP/1.1
Host: 123.234.345.456
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8
Connection: close

這次請求的意思是,以GET方法訪問123.234.345.456

HTTP/1.1 303 See Other
Date: Tue, 21 Mar 2017 03:39:10 GMT
Server: Apache
Location: http://www.xxx.com
Content-Length: 300
Connection: close
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>303 See Other</title>
</head><body>
<h1>See Other</h1>
<p>The answer to your request is located <a href="http://www.xxx.com">here</a>.</p>
<hr>
<address>Apache Server at 123.234.345.456 Port 80</address>
</body></html>

這段響應報文的意思是,http://www.xxx.com 也可以訪問到 123.234.345.456 所訪問的資源,請你訪問 http://www.xxx.com 這個URI吧!

  • 304 Unmodified

附加條件是指報文中含有 If-Match、If-None-Match、If-Modified-Since、If-Unmodified-Sine、If-Range 中任一頭部。

該狀態碼錶示客戶端在發送攜帶附加條件的報文時,服務端允許請求資源但未符合條件的情況

3. 4XX 客戶端錯誤

4XX 響應結果表示錯誤是在客戶端發生的。

  • 400 Bad Request
    該狀態碼錶示客戶端發送的請求報文中有語法錯誤,需修改後再次請求。

  • 401 Unauthorized
    該狀態碼錶示客戶端發送的請求需要有通過HTTP認證的認證信息,若之前已經請求過一次則表示認證失敗。
    返回含有 401 的響應必須包含一個用於被請求資源的 WWW-Authenticate 頭部以認證(Challeneg)用戶信息。當瀏覽器初次收到401響應會彈出用於認證的對話框。

  • 403 Forbidden
    該狀態碼錶示服務端拒絕客戶端請求的資源。服務端沒有必要返回拒絕的詳細信息,若要返回在響應報文的主體中描述即可。

  • 404 Not Found
    該狀態碼錶示服務端沒有客戶端請求的資源,也可在服務端拒絕客戶端請求的資源並不想給出任何拒絕信息時使用。

4. 5XX 服務端錯誤

5XX 的響應結果表示錯誤是在服務端發生的。

  • 500 Internal Server Error
    該狀態碼錶示服務端在處理請求時發生錯誤,也可能是Web應用存在bug或臨時性服務器故障。

  • 503 Service Unavailable
    該狀態碼錶示服務端暫時處於超負荷或者正在進行停機維護,現在無法請求。如果知道解除上述狀況的時間,可以加入頭部字段Retry-After在返回給客戶端。

終於寫完了,這篇博文谷歌瀏覽器崩潰了不下5次,而我又沒有保存的習慣,心裏苦。QAQ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章