在我們向服務器發送一個HTTP請求時,會經歷tcp連接(三次握手),發送HTTP請求,服務器返回HTTP響應,瀏覽器對響應中的狀態碼進行分析判斷,來確定請求是否成功,是否成功得到我們需要的信息。
那么,對於服務器返回的常見狀態碼,瀏覽器會怎樣應對呢?
1xx:是預留給協議的
2xx:是表示請求成功的
3xx:是表示重定向的
4xx:是客戶端錯誤的
5xx:是服務器端錯誤的
常見狀態碼:
2xx
200:Success。請求成功。
3xx
301:永久重定向。當返回的狀態碼是301時,瀏覽器需要重新發送一個HTTP請求,到服務器返回的新地址。
重定向的原因:
是為了保持並提高該網站在搜索引擎的排名。兩個不同的url地址被服務器認為是兩個不同的網站,當一個網站因為某些原因變更了他的url,為了保持住他原來的排名,他會在原先的url的服務器做一個設置,當有用戶訪問該網站時(使用舊的url),服務器會返回一個301和一個新的url地址,這樣瀏覽器收到這個狀態碼,便會自動繼續使用新的url發送HTTP請求。
302:臨時重定向。只有在Cache-Control或Expires中進行了指定的情況下,這個響應才是可緩存的。
303:臨時重定向。響應可以在另一個url上被找到,並且客戶端應以GET的方式訪問那個資源,同時,303禁止被緩存;當然,第二個請求(重定向)可能被緩存(如果沒有設置禁止緩存)。
304:禁止包含消息體,文檔內容(自上次訪問以來或根據請求條件)並沒有改變。或者:客戶端有緩沖的文檔並發出了一個條件性的請求。服務器告訴客戶端,原來緩沖的文檔還可以繼續使用。
305:使用代理。
307:臨時重定向。只有在Cache-Control或Expires中進行了指定的情況下,這個響應才是可緩存的。PS:部分瀏覽器不能識別307。
臨時重定向和永久重定向的區別:
臨時重定向的舊url以后還會用,只是暫時用別的url代替;永久重定向是舊url不再使用,被新的url代替。
4xx
400:錯誤請求,語法或參數有誤。
401:未授權。
403:禁止,拒絕請求。
404:Not Found。沒有找到該頁面。
5xx
500:服務器內部錯誤。
501:不支持當前請求所需要的某個功能。
502:錯誤網關。
503:服務器不可用(超載或停機維護),只是暫時不可用。
504:網關超時。
505:HTTP版本不受支持。
更多HTTP狀態碼的詳細解釋:傳送門