狀態碼告知從服務端返回來的請求結果
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