這幾天小組值班的時候老是聽學長提起面試,也順便搜了下一些傳說中的面經....
發現差距仍是挺大的,甚至這個狀態碼的問題也沒好好總結過
爲了證實本身作過程序員.............就從新記錄下html
絕大部分爲《圖解HTTP》筆記python
HTTP 狀態碼負責表示客戶端 HTTP 請求的返回結果、標記服務器端 的處理是否正常、通知出現的錯誤等工做
狀態碼由3位數字組成,第一位是緣由分類表明,剩下的兩位沒有特殊分類
類型 | 類別 | 緣由 |
---|---|---|
1XX | Informational(信息性狀態碼) | 接受的請求正在處理 |
2XX | Success(成功狀態碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態碼) | 須要進行附加操做以完成請求 |
4XX | Client Error(客戶端錯誤狀態碼) | 服務器沒法處理請求 |
5XX | 5XX Server Error(服務器錯誤狀態碼) | 服務器處理請求錯誤 |
常見的大概一共有14種程序員
這個狀態碼應該是最多見也是咱們最想見到的,表明客戶端發送的請求被服務端正常處理
同時在響應報文內,隨狀態碼返回的信息會隨着HTTP方法不一樣而不一樣面試
常見的請求方法是GET和POST,但不只僅這兩種,一般有如下8種方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE和CONNECT
這個狀態碼錶明的意思就是客戶端發送的請求被服務端正常處理了
可是服務端並無返回任何實體內容瀏覽器
通常在只須要從客戶端往服務器發送信息,而對客戶端不須要發送新
信息內容的狀況下使用
該狀態碼錶示客戶端進行了範圍請求,而服務器成功執行了這部分的GET請求
對於206的定義是請求必須包含Range頭來標示咱們想要的範圍緩存
所以這就是說咱們能夠經過Range和206 Partial Content來分塊獲取一個大文件
永久性重定向
該狀態碼錶示請求的url資源被分配了新的url
若是已經把資源對應的URI保存爲書籤了
可是此時新的URL在Location頭中給出,瀏覽器應該自動地保存和訪問新的URL服務器
臨時性重定向
從總的描述中咱們能夠看出這個狀態碼和301類似
只是該狀態碼屬於臨時性分配新的url
在本次的訪問中應使用新得url,同時不用更新書籤url
這個狀態碼也表明訪問存在新的url,但應注意的是這個
狀態碼明確表示客戶端應該採用GET方法獲取資源spa
好比當使用POST方法訪問CGI程序其執行後的處理結果是但願客戶端能以GET方法重定向
到另外一個URI上去時,返回303狀態碼。雖然302 Found狀態碼也能夠實現相同的功能,但
這裏使用303狀態碼是最理想的
該狀態碼錶示客戶端發送附帶條件的請求時,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 中任一首部
臨時重定向
這個狀態碼和302含義同樣,不過上面沒有說到
當 30一、30二、303響應狀態碼返回時,幾乎全部的瀏覽器都會把POST改爲 GET,並刪除請求報文內的主體,以後請求會自動再次發送
30一、302標準是禁止將POST方法改變成GET方法的,但實際使用時你們都仍是會那麼作
而這個307比較聽話,會遵守瀏覽器標準,不會從POST變成GET
該狀態碼錶示請求報文中存在語法錯誤。當錯誤發生時,需修改請求的內容後再次發送請求
該狀態碼錶示發送的請求須要有經過HTTP認證(BASIC認證、DIGEST 認證)的認證信息。另外若以前已進行過1次請求,則表示用戶認證失敗
這個狀態碼也是比較常見的,表示嘗試請求訪問的資源被禁止訪問
未得到文件系統的訪問受權,訪問權限出現某些問題(從未受權的發送源IP 地址試圖訪問)等列舉的狀況均可能是發生403的緣由
又一個常見的狀態碼,表示服務器沒有此資源
也多是服務器無情的拒絕了你,但不想告訴你爲何
這個在python的開發中我主要見到的主要是路由未定義而致使的404
該狀態碼代表服務器端在執行請求時發生了錯誤。也有多是Web應用存在的bug或某些臨時的故障
這個正如官方解釋,在開發中將常遇到的問題就是代碼錯誤,至少我碰到的是這樣
這個狀態碼錶明的是服務器超過負載或者停機維護,沒法處理請求
很多返回的狀態碼響應都是錯誤的,可是用戶可能察覺不到這點。好比 Web 應用程序內部發生錯誤,狀態碼依然返回200 OK,這種狀況也常常遇到