【HTTP圖解】4-返回結果的HTTP狀態碼
目錄
狀態碼告知從伺服器端返回的請求結果
藉助狀態碼,使用者可以知道伺服器端是否正常處理了請求。狀態碼非常多,下面只介紹最常用的。
2xx成功
200 OK :
一切正常
204 No Content
該狀態碼代表伺服器接收的請求已成功處理,但在返回的響應報文中不含實體的主體部分。瀏覽器發出請求後,返回204響應,瀏覽器的頁面不會發生更新。
206 Partial Content
改狀態嗎表示客戶端進行了範圍請求,而伺服器成功執行了這部分的GET請求。響應報文中包含由Content-Range指定範圍的實體內容。
3xx重定向
表明瀏覽器需要執行某些特殊的處理以正確處理請求。
客戶端使用域名 A 請求資源,但是原來指定的資源已經更換了URL,新的URL為B,伺服器端向客戶端返回狀態碼301/302,並且返回新的localtion,智慧的瀏覽器從新的localtion抓取資源進行展示,並將瀏覽器位址列的地址修改為新的地址。
301 Moved Permanently
永久性重定向
該狀態碼錶示請求的資源已被分配了新的URI,以後應該使用資源現在所指的URI。搜尋引擎收到301狀態碼之後,會向新的網址請求資源,並且自動將原來的網址替換成新的網址。
輸入網址:jingdong.com
,通過F12檢視返回碼302,已經永久重定向到jd.com
。說明jingdong.com
未來不再使用,你需要更新新的域名。(當然jingdong.com
的所有權還在京東手裡,不然它怎麼有許可權跳轉到其他的網址呢)
302 Found
臨時性重定向
和301 Moved Permanently狀態碼相似,但302狀態碼代表的資源不是被永久移動,只是臨時性質的。
代表原來的網址以後可能還會繼續使用,但是目前先重新向到其他的網址請求資源。
舉例:現在我想在沒登入的情況下訪問我的京東個人主頁,會收到302狀態碼,跳轉到京東的登入頁面。
https//home.jd.com
跳轉到https://passport.jd.com/new/login.aspx
302可能會導致url劫持
現在有一個很爛的小網站,使用302指向了一個流量非常大的網站,由於小網站的域名比大網站的域名看起來更友好(簡潔),那麼搜尋引擎會繼續使用小網站的域名,但是會向大網站爬取資源。這樣就造成了在搜尋引擎的搜尋結果中,域名是小網站的域名,內容卻是大網站的內容。
303 See Other
303狀態碼和302有相同的功能,但302明確表示客戶端應該採用GET方法獲取資源,屬於HTTP/1.1的內容。
4xx客戶端錯誤
400 Bad Request
報文中存在語法錯誤,瀏覽器會像200 OK一樣對待該狀態碼。
401 Unauthorized
傳送的請求需要有通過HTTP認證的認證資訊
403 Forbidden
對請求資源的訪問被伺服器拒絕了
404 Not Found
伺服器上無法找到請求的資源
5xx伺服器錯誤
500 Internal Server Error
伺服器端在執行請求時發生了錯誤,也可能時Web應用存在的bug或某些臨時的故障。
503 Service Unavailable
伺服器暫時處於超負載或正在進行停機維護,現在無法處理請求。
不少返回的狀態碼相應都是錯誤的,但是使用者可能察覺不到。