根據HTTP标準,HTTP請求可以使用多種請求方法。
HTTP1.0定義了三種請求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五種請求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
序号 | 方法 | 描述 |
1 | GET | 請求指定的頁面資訊,并傳回實體主體。 |
2 | HEAD | 類似于get請求,隻不過傳回的響應中沒有具體的内容,用于擷取報頭 |
3 | POST | 向指定資源送出資料進行處理請求(例如送出表單或者上傳檔案)。資料被包含在請求體中。POST請求可能會導緻新的資源的建立和/或已有資源的修改。 |
4 | PUT | 從用戶端向伺服器傳送的資料取代指定的文檔的内容。 |
5 | DELETE | 請求伺服器删除指定的頁面。 |
6 | CONNECT | HTTP/1.1協定中預留給能夠将連接配接改為管道方式的代理伺服器。 |
7 | OPTIONS | 允許用戶端檢視伺服器的性能。 |
8 | TRACE | 回顯伺服器收到的請求,主要用于測試或診斷 |
當我們從用戶端向伺服器發送請求時
伺服器向我們傳回狀态碼
狀态碼就是告訴我們伺服器響應的狀态
通過它,我們就可以知道目前請求是成功了還是出現了什麼問題
狀态碼是由3位數字和原因短語組成的(比如最常見的:200 OK)
其中第一位數字表示響應類别,響應類别從1到5分為五種
add:其實我查閱資料發現還有一個6打頭的一個 600 Unparseable Response Headers
表示伺服器沒有傳回響應頭部,隻傳回實體内容,也算做伺服器錯誤狀态碼吧,不過絕對不常見
狀态碼 | 響應類别 | 原因短語 |
---|---|---|
1XX | 資訊性狀态碼(Informational) | 伺服器正在處理請求 |
2XX | 成功狀态碼(Success) | 請求已正常處理完畢 |
3XX | 重定向狀态碼(Redirection) | 需要進行額外操作以完成請求 |
4XX | 用戶端錯誤狀态碼(Client Error) | 用戶端原因導緻伺服器無法處理請求 |
5XX | 伺服器錯誤狀态碼(Server Error) | 伺服器原因導緻處理請求出錯 |
狀态碼響應類别的的定義是必須遵守的,後面的兩個數字伺服器自己DIY也沒什麼問題
RFC2616(用來指定HTTP協定标準的文檔)标準定義的就有四十多種,加上擴充能達到六十種
不過常見的大概隻有十四種,下面我來談談這些有代表性的14種HTTP狀态碼
2XX 成功
200 OK
表示請求被伺服器正常處理
最常見的就是這個了
随着這個狀态碼傳回的資訊跟你的請求方法有關
比如GET請求,請求的資源會作為響應實體傳回
而HEAD請求,資訊隻存在于響應封包首部,因為它不會傳回封包實體,隻傳回封包首部
204 No Content
表示請求已成功處理,但是沒有内容傳回(就應該沒有内容傳回的狀況)
也就是傳回的響應封包中沒有封包實體(其實是沒有封包實體的主體部分)
浏覽器向伺服器發送請求後收到了204,那麼浏覽器頁面不會發生更新
一般用在隻是用戶端向伺服器發送資訊,而伺服器不用向用戶端傳回什麼資訊的情況
206 Partial Content
表示伺服器已經完成了部分GET請求(用戶端進行了範圍請求)
響應封包中包含Content-Range指定範圍的實體内容
3XX 重定向
301 Moved Permanently
永久重定向,表示請求的資源已經永久的搬到了其他位置
就是說資源已經被配置設定了新的URI
新的URI應該提示在響應封包的Location首部字段
隻要不是HEAD請求,響應實體應該包含新URI的超連結和簡短的說明
302 Found
臨時重定向,表示請求的資源臨時搬到了其他位置
請求的資源暫時被配到到了新的URI
和301很像,隻不過資源是臨時移動,資源在将來可能還會改變
同樣地,新的臨時URI應該提示在響應封包的Location首部字段
隻要不是HEAD請求,響應實體應該包含新URI的超連結和簡短的說明
303 See Other
表示請求資源存在另一個URI,應使用GET定向擷取請求資源
303功能與302一樣,差別隻是303明确用戶端應該使用GET通路
(很多HTTP/1.1之前的浏覽器不能了解303,但是大家都把302當303對待,使用GET請求新URI)
304 Not Modified
表示用戶端發送附帶條件的請求(GET方法請求封包中的IF…)時,條件不滿足
傳回304時,不包含任何響應主體
雖然304被劃分在3XX,但和重定向一毛錢關系都沒有
307 Temporary Redirect
臨時重定向,和302有着相同含義
盡管302标準禁止POST變為GET,但沒人聽他的
而307就會遵照标準,不會從POST變為GET
但處理響應行為,各個浏覽器可能不同
4XX 用戶端錯誤
400 Bad Request
表示請求封包存在文法錯誤或參數錯誤,伺服器不了解
伺服器不應該重複送出這個請求
需要修改請求内容後再次發送
401 Unauthorized
表示發送的請求需要有HTTP認證資訊或者是認證失敗了
傳回401的響應必須包含一個适用于被請求資源的WWW-Authenticate首部以質詢使用者資訊
浏覽器初次接受401時,會彈出認證視窗
403 Forbidden
表示對請求資源的通路被伺服器拒絕了
伺服器可以對此作出解釋,也可以不解釋
想說明的話可以在響應實體的主體部分描述原因
比如說你可能沒有通路權限
404 Not Found
表示伺服器找不到你請求的資源
也有可能伺服器就是不想給你然後騙你找不到(⊙ˍ⊙)
而且大多伺服器都是這麼玩這個狀态碼的
5XX 伺服器錯誤
500 Internal Server Error
表示伺服器執行請求的時候出錯了
可能是Web應用有bug或臨時故障
更有可能是伺服器源代碼有bug…
503 Service Unavailable
表示伺服器超負載或正停機維護,無法處理請求
如果伺服器知道還需要多長時間,就寫入Retry-After首部字段傳回
總結
傳回的狀态碼和狀态不一緻的情況是有可能發生得
比如Web應用程式内部錯誤,但仍然傳回 200 OK
-
200 OK
請求正常處理完畢
-
204 No Content
請求成功處理,沒有實體的主體傳回
-
206 Partial Content
GET範圍請求已成功處理
-
301 Moved Permanently
永久重定向,資源已永久配置設定新URI
-
302 Found
臨時重定向,資源已臨時配置設定新URI
-
303 See Other
臨時重定向,期望使用GET定向擷取
-
304 Not Modified
發送的附帶條件請求未滿足
-
307 Temporary Redirect
臨時重定向,POST不會變成GET
-
400 Bad Request
請求封包文法錯誤或參數錯誤
-
401 Unauthorized
需要通過HTTP認證,或認證失敗
-
403 Forbidden
請求資源被拒絕
-
404 Not Found
無法找到請求資源(伺服器無理由拒絕)
-
500 Internal Server Error
伺服器故障或Web應用故障
-
503 Service Unavailable
伺服器超負載或停機維護
原文位址 https://blog.csdn.net/q1056843325/article/details/53147180