【刷題】麪筋-網絡-HTTP的請求類型和狀態碼
HTTP 請求方法
概述
- 根據 HTTP 標準,HTTP 請求可使用多種請求方法。
- HTTP1.0 定義了三種請求方法: GET, POST 和 HEAD方法。
- HTTP1.1 新增了六種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
詳述
- 1 GET 請求指定的頁面信息,並返回實體主體。
- 2 HEAD 相似於 GET 請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
- 3 POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST 請求可能會致使新的資源的創建和/或已有資源的修改。
- 4 PUT 從客戶端向服務器傳送的數據取代指定的文檔的內容。
- 5 DELETE 請求服務器刪除指定的頁面。
- 6 CONNECT HTTP/1.1 協議中預留給可以將鏈接改成管道方式的代理服務器。
- 7 OPTIONS 容許客戶端查看服務器的性能。
- 8 TRACE 回顯服務器收到的請求,主要用於測試或診斷。
- 9 PATCH 是對 PUT 方法的補充,用來對已知資源進行局部更新 。
HTTP狀態碼
概述
- 當瀏覽者訪問一個網頁時,瀏覽者的瀏覽器會向網頁所在服務器發出請求。
- 當瀏覽器接收並顯示網頁前,此網頁所在的服務器會返回一個包含HTTP狀態碼的信息頭(server header)用以響應瀏覽器的請求。
- HTTP狀態碼的英文爲HTTP Status Code。
下面是常見的HTTP狀態碼:
- 200 - 請求成功
- 301 - 資源(網頁等)被永久轉移到其它URL
- 404 - 請求的資源(網頁等)不存在
- 500 - 內部服務器錯誤
HTTP狀態碼分類
-
概述
- HTTP狀態碼由三個十進制數字組成,第一個十進制數字定義了狀態碼的類型,後兩個數字沒有分類的做用。
-
HTTP狀態碼共分爲5種類型:
- 1** 信息,服務器收到請求,須要請求者繼續執行操做
- 2** 成功,操做被成功接收並處理
- 3** 重定向,須要進一步的操做以完成請求
- 4** 客戶端錯誤,請求包含語法錯誤或沒法完成請求
- 5** 服務器錯誤,服務器在處理請求的過程當中發生了錯誤
HTTP狀態碼列表
-
1**:信息,服務器收到請求,須要請求者繼續執行操做
- 100 Continue 繼續。客戶端應繼續其請求
- 101 Switching Protocols 切換協議。服務器根據客戶端的請求切換協議。只能切換到更高級的協議,例如,切換到HTTP的新版本協議
-
2**:成功,操做被成功接收並處理
- 200 OK 請求成功。通常用於GET與POST請求
- 201 Created 已建立。成功請求並建立了新的資源
- 202 Accepted 已接受。已經接受請求,但未處理完成
- 203 Non-Authoritative Information 非受權信息。請求成功。但返回的meta信息不在原始的服務器,而是一個副本
- 204 No Content 無內容。服務器成功處理,但未返回內容。在未更新網頁的狀況下,可確保瀏覽器繼續顯示當前文檔
- 205 Reset Content 重置內容。服務器處理成功,用戶終端(例如:瀏覽器)應重置文檔視圖。可經過此返回碼清除瀏覽器的表單域
- 206 Partial Content 部份內容。服務器成功處理了部分GET請求
-
3**:重定向,須要進一步的操做以完成請求
- 300 Multiple Choices 多種選擇。請求的資源可包括多個位置,相應可返回一個資源特徵與地址的列表用於用戶終端(例如:瀏覽器)選擇
- 301 Moved Permanently 永久移動。請求的資源已被永久的移動到新URI,返回信息會包括新的URI,瀏覽器會自動定向到新URI。從此任何新的請求都應使用新的URI代替
- 302 Found 臨時移動。與301相似。但資源只是臨時被移動。客戶端應繼續使用原有URL
- 303 See Other 查看其它地址。與301相似。使用GET和POST請求查看
- 304 Not Modified 未修改。所請求的資源未修改,服務器返回此狀態碼時,不會返回任何資源。客戶端一般會緩存訪問過的資源,經過提供一個頭信息指出客戶端但願只返回在指定日期以後修改的資源(人話:請求的這個資源至你上次取得後,並無更改,你直接用你本地的緩存吧)
- 305 Use Proxy 使用代理。所請求的資源必須經過代理訪問
- 306 Unused 已經被廢棄的HTTP狀態碼
- 307 Temporary Redirect 臨時重定向。與302相似。使用GET請求重定向
-
4**:客戶端錯誤,請求包含語法錯誤或沒法完成請求
- 400 Bad Request 客戶端請求的語法錯誤,服務器沒法理解
- 401 Unauthorized 請求要求用戶的身份認證
- 402 Payment Required 保留,未來使用
- 403 Forbidden 服務器理解請求客戶端的請求,可是拒絕執行此請求
- 404 Not Found 服務器沒法根據客戶端的請求找到資源(網頁)。經過此代碼,網站設計人員可設置"您所請求的資源沒法找到"的個性頁面
- 405 Method Not Allowed 客戶端請求中的方法被禁止
- 406 Not Acceptable 服務器沒法根據客戶端請求的內容特性完成請求
- 407 Proxy Authentication Required 請求要求代理的身份認證,與401相似,但請求者應當使用代理進行受權
- 408 Request Time-out 服務器等待客戶端發送的請求時間過長,超時
- 409 Conflict 服務器完成客戶端的 PUT 請求時可能返回此代碼,服務器處理請求時發生了衝突
- 410 Gone 客戶端請求的資源已經不存在。410不一樣於404,若是資源之前有如今被永久刪除了可以使用410代碼,網站設計人員可經過301代碼指定資源的新位置
- 411 Length Required 服務器沒法處理客戶端發送的不帶Content-Length的請求信息
- 412 Precondition Failed 客戶端請求信息的先決條件錯誤
- 413 Request Entity Too Large 因爲請求的實體過大,服務器沒法處理,所以拒絕請求。爲防止客戶端的連續請求,服務器可能會關閉鏈接。若是隻是服務器暫時沒法處理,則會包含一個Retry-After的響應信息
- 414 Request-URI Too Large 請求的URI過長(URI一般爲網址),服務器沒法處理
- 415 Unsupported Media Type 服務器沒法處理請求附帶的媒體格式
- 416 Requested range not satisfiable 客戶端請求的範圍無效
- 417 Expectation Failed 服務器沒法知足Expect的請求頭信息
-
5**:服務器錯誤,服務器在處理請求的過程當中發生了錯誤
- 500 Internal Server Error 服務器內部錯誤,沒法完成請求
- 501 Not Implemented 服務器不支持請求的功能,沒法完成請求
- 502 Bad Gateway 做爲網關或者代理工做的服務器嘗試執行請求時,從遠程服務器接收到了一個無效的響應
- 503 Service Unavailable 因爲超載或系統維護,服務器暫時的沒法處理客戶端的請求。延時的長度可包含在服務器的Retry-After頭信息中
- 504 Gateway Time-out 充當網關或代理的服務器,未及時從遠端服務器獲取請求
- 505 HTTP Version not supported 服務器不支持請求的HTTP協議的版本,沒法完成處理
資源重定向
-
概述
- 在HTTP的諸多狀態碼中,由3開頭的3XX這一類狀態碼錶示的含義是一類重定向狀態碼;
- 服務器會在須要指示瀏覽器進行重定向的時候返回這些狀態碼給瀏覽器,且大多數3XX狀態碼都會附上Location字段,其中的值則是服務器要求瀏覽器轉向的URL的值。
- 瀏覽器接受到重定向響應之後,會根據Location字段的值,自動的將請求轉向其中的URL。
-
簡言之
- 重定向經常用於自動跳轉,從活動空間來看大概分兩類:服務器內部跳轉和服務器之間跳轉。
- 服務器內部跳轉常見於「登錄成功!5秒以後將自動進入首頁」這種應用。
- 服務器之間跳轉,種類稍微多一些:
- (1)從服務器內跳往外部服務器;
- (2)從A服務器跳轉到B服務器,接着跳轉到C服務器;
- (3) 從A服務器跳轉到B服務器, 業務處理完畢以後又跳轉到A服務器;
- (4)從用戶瀏覽器向A服務器
- 發送請求,在出口網關處進行重定向,如經過iptable之類,重定向到一屬個認證服務器B,返回一個認證登錄的頁面,當用戶輸入了正確的用戶名和密碼等,認證服務器B再經過http重定向到A服務器.
END
歡迎關注本站公眾號,獲取更多信息