最近在找工作,遇到一些面試的問題,覺得有必要記錄一下筆記,平時坐車的時候可以翻閱鞏固一下!
http狀態碼是兩次面試都有遇到過,答得也不是很全面,所以淘了一下,也跟大家分享一下。
什么是狀態碼
當發送一個請求時,服務器響應會包含一個狀態碼,這個狀態碼代表請求的結果,由3位數字組成。
狀態碼有哪些
狀態碼總共被分為5大類
1開頭 100-101 信息提示(表示臨時響應并需要請求者繼續執行操作的狀態代碼)
2開頭 200-206 成功(表示成功處理了請求的狀態代碼)
3開頭 300-305 重定向?
4開頭 400-415 客戶端錯誤(這些狀態代碼表示客戶端請求可能出錯,服務器無法處理)
5開頭 500-505 服務器錯誤(服務器在嘗試處理請求時發生內部錯誤。 這些錯誤可能是服務器本身要做響應時出錯,而不是請求出錯)
常見狀態碼
200 OK 服務器成功處理了請求
201 Created 請求成功且服務器已創建了新的資源(上傳文件的時候會返回這個狀態)
301 Moved Permanently/302 Found(重定向)請求的URL已移走。Response中應該包含一個Location URL, 說明資源現在所處的位置,301是永久重定向,如果不清除瀏覽器緩存,之后如果不重定向一樣會重定向,302是暫時重定向,以后不取消重定向,瀏覽器就不會自動跳轉。
304 Not Modified(未修改)客戶的緩存資源是最新的, 要客戶端使用緩存,上段說到3開頭是重定向,應該是告訴瀏覽器重定向到本地緩存,你可以試一下,改變下服務器的響應輸入并且返回304,然后在瀏覽器查看一下response的內容,其實是舊的內容。我了解的判斷是否是最新的一般是通過請求頭上的If-None-Match跟服務器的ETag是否匹配,或者是通過請求頭If-Modified-Since跟服務器Last-Modified進行匹配,不一致就是服務器有更新,需要返回200,一致就返回304。
401 Unauthorized 未授權 (請求要求身份驗證,對于需要登錄的網頁,服務器可能返回此響應)?
403 Forbiden 拒絕(服務器拒絕請求)
404 Not Found 未找到資源(客戶端輸入請求url是不存在)
500 Internal Server Error 服務器內部錯誤(服務器遇到錯誤,無法完成請求,可能是程序發生錯誤,執行到一半發生異常沒有處理)
501 Not Implemented 尚未實施(如果請求的方法錯誤時,可能會出現狀態)
502 Bad Gateway 錯誤網關 (服務器作為網關或代理,從上游服務器收到無效響應,例如nginx代理到php,php沒有開啟的時候,會出現502錯誤)
503 Service Unavailable 服務不可用服務器目前無法使用(由于超載并發數超出范圍、停機維護,一般只是暫時的)
504 Gateway Timeout 網關超時 (服務器作為網關或代理,但是沒有及時從上游服務器收到請求,參考502)
最后
還有一些狀態碼現在沒有遇到,1開頭的看了資料也不太理解怎么產生的,如果你看到這篇文章,可以一起交流。也希望整理到這部分http狀態碼對你以后的工作有所幫助,一起學習交流。