HTTP狀態碼(彷佛沒好好研究過

這幾天小組值班的時候老是聽學長提起面試,也順便搜了下一些傳說中的面經....
發現差距仍是挺大的,甚至這個狀態碼的問題也沒好好總結過
爲了證實本身作過程序員.............就從新記錄下html

絕大部分爲《圖解HTTP》筆記python

總述

HTTP 狀態碼負責表示客戶端 HTTP 請求的返回結果、標記服務器端 的處理是否正常、通知出現的錯誤等工做
狀態碼由3位數字組成,第一位是緣由分類表明,剩下的兩位沒有特殊分類
類型 類別 緣由
1XX Informational(信息性狀態碼) 接受的請求正在處理
2XX Success(成功狀態碼) 請求正常處理完畢
3XX Redirection(重定向狀態碼) 須要進行附加操做以完成請求
4XX Client Error(客戶端錯誤狀態碼) 服務器沒法處理請求
5XX 5XX Server Error(服務器錯誤狀態碼) 服務器處理請求錯誤

常見的大概一共有14種程序員

2XX

200 OK

這個狀態碼應該是最多見也是咱們最想見到的,表明客戶端發送的請求被服務端正常處理
同時在響應報文內,隨狀態碼返回的信息會隨着HTTP方法不一樣而不一樣面試

常見的請求方法是GET和POST,但不只僅這兩種,一般有如下8種方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT

200

204 No Content

這個狀態碼錶明的意思就是客戶端發送的請求被服務端正常處理了
可是服務端並無返回任何實體內容瀏覽器

通常在只須要從客戶端往服務器發送信息,而對客戶端不須要發送新
信息內容的狀況下使用

206 Partial Content

該狀態碼錶示客戶端進行了範圍請求,而服務器成功執行了這部分的GET請求
對於206的定義是請求必須包含Range頭來標示咱們想要的範圍緩存

所以這就是說咱們能夠經過Range和206 Partial Content來分塊獲取一個大文件

3XX

301 Moved Permanently

永久性重定向

該狀態碼錶示請求的url資源被分配了新的url
若是已經把資源對應的URI保存爲書籤了
可是此時新的URL在Location頭中給出,瀏覽器應該自動地保存和訪問新的URL服務器

302 Found

臨時性重定向

從總的描述中咱們能夠看出這個狀態碼和301類似
只是該狀態碼屬於臨時性分配新的url
在本次的訪問中應使用新得url,同時不用更新書籤url

303 See Other

這個狀態碼也表明訪問存在新的url,但應注意的是這個
狀態碼明確表示客戶端應該採用GET方法獲取資源spa

好比當使用POST方法訪問CGI程序其執行後的處理結果是但願客戶端能以GET方法重定向
到另外一個URI上去時,返回303狀態碼。雖然302 Found狀態碼也能夠實現相同的功能,但
這裏使用303狀態碼是最理想的

304 Not Modified

該狀態碼錶示客戶端發送附帶條件的請求時,304狀態碼返回時,不包含任何響應的主體部分
服務器告訴客戶,原來緩衝的文檔還能夠繼續使用
304雖然被劃分在3XX類別中,可是和重定向沒有關係orm

好比在包含If-Modified的網頁中,服務器會自動完成 Last Modified 和 If Modified Since 的比較,完成緩存或者更新
而動態頁面則是在消息頭中定義Last Modified,最後造成這樣的結果

第一次訪問 200
鼠標點擊二次訪問 (Cache)
按F5刷新 304
按Ctrl+F5強制刷新 200

附帶條件的請求是指採用 GET 方法的請求報文中包含 If-Match,If-ModifiedSince,If-None-Match,If-Range,If-Unmodified-Since 中任一首部

307 Temporary Redirect

臨時重定向

這個狀態碼和302含義同樣,不過上面沒有說到

當 30一、30二、303響應狀態碼返回時,幾乎全部的瀏覽器都會把POST改爲 GET,並刪除請求報文內的主體,以後請求會自動再次發送
30一、302標準是禁止將POST方法改變成GET方法的,但實際使用時你們都仍是會那麼作

而這個307比較聽話,會遵守瀏覽器標準,不會從POST變成GET

4XX

400 Bad Request

該狀態碼錶示請求報文中存在語法錯誤。當錯誤發生時,需修改請求的內容後再次發送請求

401 Unauthorized

該狀態碼錶示發送的請求須要有經過HTTP認證(BASIC認證、DIGEST 認證)的認證信息。另外若以前已進行過1次請求,則表示用戶認證失敗

401

403 Forbidden

這個狀態碼也是比較常見的,表示嘗試請求訪問的資源被禁止訪問
未得到文件系統的訪問受權,訪問權限出現某些問題(從未受權的發送源IP 地址試圖訪問)等列舉的狀況均可能是發生403的緣由

404 Found

又一個常見的狀態碼,表示服務器沒有此資源
也多是服務器無情的拒絕了你,但不想告訴你爲何

這個在python的開發中我主要見到的主要是路由未定義而致使的404

5XX

500 Internal Server Error

該狀態碼代表服務器端在執行請求時發生了錯誤。也有多是Web應用存在的bug或某些臨時的故障

這個正如官方解釋,在開發中將常遇到的問題就是代碼錯誤,至少我碰到的是這樣

503 Service Unavailable

這個狀態碼錶明的是服務器超過負載或者停機維護,沒法處理請求

關於狀態碼和響應

很多返回的狀態碼響應都是錯誤的,可是用戶可能察覺不到這點。好比 Web 應用程序內部發生錯誤,狀態碼依然返回200 OK,這種狀況也常常遇到

參考:狀態碼維基百科
304 Not Modified狀態碼
304是什麼意思

相關文章
相關標籤/搜索