易記的瀏覽器狀態碼

2022-09-06 11:54:21 字數 2763 閱讀 5113

狀態碼

含義1xx

請求正被處理

2xx請求成功處理

3xx請求需要附加操作,常見的例子如重定向

4xx客戶端出錯導致請求無法被處理

5xx服務端處理出錯

表示請求已經被正常處理,這個比較常見,就不多說了。

表示請求成功,但是響應的報文中不含實體主體。通常用於只需要客戶端向服務端傳送資訊,而不需要接受新資訊的情況使用
(這麼官方且抽象的描述顯然不是我的風格),舉例:

現在很常見的一種請求型別option,通常被用來做正式請求的預請求,這個請求只需要確認後續的請求能不能通過,即只需要乙個結果,而不需要返回其他內容,這類請求成功時就會返回204。

字面意思:只返回了請求資源的部分。這種情況必須提到提到乙個請求頭range——在http的請求中,這個頭部用來表示範圍請求,例如:

'range':byte=5001-10000 //

表示本次要請求資源的5001-10000位元組的部分

這種情況下,如果伺服器接受範圍請求並且成功處理,就會返回206,並且在響應的頭部返回

'content-range':bytes 5001-10000/10000 // 表示整個資源有10000位元組,本次返回的範圍為 5001-10000位元組
客戶端發起乙個請求,要訪問a站點,此時收到的響應如下:

301moved permanently 

...location:`b.com`

...//

上述內容表示:親,您請求的資源已經永久轉移啦,這邊建議您去新的位址b.com訪問呢,以後也請直接訪問新位址哦

字面意思:資源臨時重定向了。和301的唯一區別就在於乙個是臨時,乙個是永久:還是舉上面的例子,響應如下:

302found

...location:`b.com`

...//

上述內容表示:親,您請求的資源被臨時轉移啦,後面也有可能再次轉移,所以這邊建議您本次去新的位址b.com訪問,以後的話還是先訪問原來位址哦,有任何變化mm依然會熱心為你解答

這個和302很像,但是有個細微區別是,除了會提示客戶端去請求location以外,還會要求請求要使用location時使用get方法。 在這補充一下乙個歷史背景:

請求返回301 302 303 時,幾乎所有瀏覽器都會把原先的post請求改為get請求。雖然frc1945和rfc2068規範中有規定:不允許客戶端在重定向時修改方法。
簡單的說,實際的瀏覽器在處理301和302時,預設就會把原先的post請求改為get請求,所以實際上使用303的意義,單純只是讓語義化更清晰點。(303表示伺服器明確告訴客戶端,你要使用get方法訪問location;如果是302,就是僅僅告訴客戶端要訪問location,不限制方法,但是實際上客戶端自己也會用get方法訪問。)

字面意思是:資源未改變,可直接使用快取。

這種情況下,服務端不會返回響應主體,含義就是:」從你上次訪問以來這個資源都沒變過喲,直接使用你本地的快取就行啦「。

304就是3xx裡面的乙個特例,因為它不算是乙個重定向。(一般我們認為重定向要給出乙個新的位址讓客戶端去訪問,304如果一定要解釋為重定向,只能解釋為讓客戶端轉去訪問快取-_-)

這個重定向是為了解決前面剛剛介紹的乙個歷史背景問題:302時瀏覽器缺省會轉用get方法去請求location,而如果是307, 含義就是嚴格限制不允許從post轉為get,這個目前我在實際工作中很少遇到。

4xx表示一般是客戶端發生了錯誤。(這位前端同學,乖乖接了這個bug吧!)

(這個狀態碼相信大家一定很不陌生,特別是入門的新同學~)400的含義簡單粗暴:「對不起,你的請求中有語法錯誤」,那具體是什麼語法錯誤呢? 答案是 —— 不一定,一般來說響應報文裡會有一些提示,例如:

字面意思:未經過認證。一般在後台系統之類的應用裡,使用者登入之後會獲得乙個身份認證資訊,然後生成mac之類的資訊,放在請求頭的authorization欄位裡,傳送給服務端,如果這個認證資訊有問題或者根本沒傳送,就會出現這個狀態碼。

這個就簡單了:禁止訪問也就是無許可權訪問。至於具體為什麼禁止,伺服器可以在響應內容的實體部分給出,當然也可以不給(沒錯,我服務端就是這麼了不起,為所欲為!)

很常見了,字面含義,服務端沒有找到所請求的資源,經驗表明,一般這個錯誤是客戶端的請求url寫錯了。(別問我怎麼知道的)

5xx表明服務端發生了錯誤。(真是個令人開心的訊息,老闆,你看不是我的問題!)

簡單粗暴,伺服器故障了。啥?你問我什麼故障?我哪知道,我只會熟練地把bug轉給隔壁的服務端同學。

作為閘道器或者**工作的伺服器嘗試執行請求時,從上游伺服器接收到無效的響應。這裡說明下閘道器和**伺服器的概念:前面我們舉例子都是直接客戶端向伺服器發請求,實際上客戶端有時候不是直接向伺服器請求,這中間可能存在閘道器和**。畫個簡單的圖:

伺服器暫時無法使用,可能是維護或者公升級,反正無法使用。

作為閘道器或者**工作的伺服器訪問超時。

前端關注的瀏覽器狀態碼

這一型別的狀態碼,代表請求已被接受,需要繼續處理。這類響應是臨時響應,只包含狀態行和某些可選的響應頭資訊,並以空行結束。由於 http 1.0 協議中沒有定義任何 1xx 狀態碼,所以除非在某些試驗條件下,伺服器禁止向此類客戶端傳送 1xx 響應。100 continue 客戶端應當繼續傳送請求。這...

瀏覽器訪問常見狀態碼

狀態 有三位數字組成,第乙個數字定義了響應的類別,共分五種類別 響應類別 1xx接受的請求正在處理 2xx正確處理請求完畢 3xx重定向,需要附加操作才能完成請求 4xx客戶端錯誤 請求有語法錯誤或請求無法實現 5xx伺服器端錯誤 伺服器未能實現合法的請求 常見狀態碼 105 dns解析失敗 200...

瀏覽器返回的常見狀態碼

http 超文字傳輸協議,在傳輸層採用的是tcp協議。瀏覽器與伺服器建立連線時會經過tcp的三次握手,一次tcp的連線可以建立多個http請求。狀態碼為伺服器接受請求之後返回的響應資訊,瀏覽器可以根據響應資訊的狀態碼判斷請求是否成功。100 繼續 101 切換協議 2xx 表示請求成功 200 su...