網站狀態碼(小結HTTP狀態碼)

本文同步本人掘金平臺的文章:https://juejin.cn/post/6844903844543987719作為一個web開發工程師,我們平時都會和諸如200, 304, 404, 501等狀態碼打交道,那麼它們是什麼意思呢?今天,我們來聊聊~什麼是HTTP狀態碼HTTP狀態碼是服務端返回給客戶端(因為這裡是web開發,這裡的客戶端指瀏覽器客戶端)的3位數字代碼。這些狀態碼相當於瀏覽器和服務器之間的對話信息。它們相互溝通兩者之間的事情是正常運行瞭還是運行失敗瞭或者發生瞭一些其他的事情(如Continue)。瞭解狀態碼有助於你快速的診斷錯誤,減少網站的停機時間等等。狀態碼分類狀態碼共分為五類,以1-5數字開頭進行標識,如下:1xxs – 信息性:服務器正在處理請求。2xxs – 成功信息:請求已經完成,服務器向瀏覽器提供瞭預期的響應。3xxs –重定向:你的請求被重定向到瞭其他地方。服務器收到瞭請求,但是有某種重定向。4xxs – 客戶端錯誤:客戶端發生錯誤,導致服務器無法處理請求。5xxs – 服務端錯誤:客戶端發出瞭有效的請求,但是服務器未能正確處理請求。備註:3xxs類中的304是個奇葩,其不屬於重定向信息提示,這個後面會講到HTTP狀態碼大體的內容已經瞭解瞭,但是在具體的工作中,要用到具體的狀態碼,我們下面來展開說明下各自的一些狀態碼和工作中常用到的那些狀態碼1xxs狀態碼100 Continue:表明目前為止,所有的請求內容都是可行的,客戶端應該繼續請求,如果完成,則忽略它。101 Switching Protocol:該狀態碼是響應客戶端Upgrade標頭發送的,並且指示服務器也正在切換協議。103 Early Hints:主要用於與Link鏈接頭一起使用,以允許用戶代理在服務器仍在準備響應時開始預加載資源。備註:在web開發的工作中,我們都會使用封裝好的庫進行接口請求,而且瀏覽器的控制臺網絡中也不會出現這類狀態碼的提示(我沒看到過),所以這一大類基本不會接觸到,瞭解一下即可。2xxs狀態碼200 OK:請求成功。成功的含義取決於HTTP方法: GET:資源已被提取並在消息正文中傳輸。 HEAD:實體標頭位於消息正文中。 POST:描述動作結果的資源在消息體中傳輸。 TRACE:消息正文包含服務器收到的請求信息。(方法不安全,一般不用)說到瞭HTTP的方法,可以戳HTTP請求方法這個解析教程來瞭解一下。201 Created:請求已經成功,並因此創建瞭一個新的資源。這通常是在PUT或POST請求之後發送的響應。202 Accepted:請求已經接收到,但是沒有響應,沒有結果。意味著不會有一個異步的響應去表明當前請求的結果,預期另外的進程和服務去處理請求,或者批處理。204 No Content:服務器成功處理瞭請求,但不需要返回任何實體內容,並且希望返回更新瞭的元信息。遇到復雜請求時候,瀏覽器會發送一個OPTION方法進行預處理返回響應。關於復雜請求和簡單請求,可以參考這篇文章CORS非簡單請求。205 Reset Content:服務器已經成功處理瞭請求,但是沒有返回任何內容。與204響應不同,返回此狀態碼的響應要求請求者重置文檔視圖。備註:使用的最多的2xxs狀態碼是200和204,在遇到204狀態碼的時候,要註意一下自己發的請求是不是復雜請求。如果是復雜請求,那麼在得到204返回時,瀏覽器有沒有接受瞭這個請求的返回,如果沒有,要叫後端搞下相關配置瞭。3xxs狀態碼上文已經提到過,這一大類是提示重定向,可是有一個奇葩–304,它並不是表示重定向的信息提示,而是表示資源未被更改。至於為什麼會被放在這個分類裡面,真不知道~(看官知道的話補充下啦)301 Moved Permanently:被請求的資源已永久移動到新位置,並且將來任何對此資源的引用都應該使用響應返回的若幹個URI之一。302 Found(Previously "Moved temporarily"):請求的資源現在臨時從不同的URI響應請求。由於這樣的重定向是臨時的,客戶端應當繼續向原有地址發送以後的請求。隻有在Cache-Control或Expires中進行瞭指定的情況下,這個響應才是可緩存的。303 See Other:對當前的請求的響應可以在另一個URI上被找到,而且客戶端應該采用GET的方式訪問那個鏈接。這個方法的存在主要是為瞭允許由腳本激活的POST請求輸出重定向到一個新的資源。304 Not Modified:如果客戶端發送瞭一個帶條件的 GET 請求且該請求已被允許,而文檔的內容(自上次訪問以來或者根據請求的條件)並沒有改變,則服務器應當返回這個狀態碼。304 響應禁止包含消息體,因此始終以消息頭後的第一個空行結尾。請求的時候一般結合If-Modified-Since頭部使用。307 Temporary Redirect:307的意義如上302。與歷史上302不同的是在重新發出原始請求時不允許更改請求方法。比如,使用POST請求始終就該用POST請求。備註:307和303已經替代瞭歷史上的302狀態碼,現在看到的臨時重定向的狀態碼是307。詳細內容可到維基百科上查看。4xxs狀態碼401 Unauthorized:這意味著你的登錄憑證無效。服務器不知道你是誰,這時,你需要嘗試重新登錄。403 Forbidden:服務器已經理解請求,但是拒絕執行它。與401不同,403知道是你登錄瞭,但是還是拒絕瞭你。404 Not Found:請求失敗,你請求所希望得到的資源未在服務器上發現。410 Gone:被請求的資源在服務器上已經不再可用,而且沒有任何已知的轉發地址。422 Unprocessable Entity:請求格式良好,但是由於語義錯誤而無妨遵循。這時候要檢查下自己的傳參格式語義有沒有正確瞭。429 Too Many Requests:用戶在給定的時間內發送瞭太多請求(“限制請求速率”)。在DDOS攻擊中就可以使用到瞭。備註:這裡要註意的是422,別請求鏈接一出錯,就屁顛屁顛的找後端,先看下後端給過來的API文檔中,要傳的字段是否都準確跟上瞭。5xxs狀態碼500 Internal Server Error:服務器內部錯誤,服務器遇到瞭不知道如何處理的情況。比如後端同學寫錯瞭model啥的~503 Service Unavailable:服務器沒有準備好處理請求。常見的原因是服務器因維護或重載而停機。504 Gateway Timeout:網關超時,服務器未能快速的做出反應。請求接口返回pedding時間過長基本就是這個問題瞭,囧。備註:遇到這類的問題,去問後端同學吧。語氣好點啦,畢竟大傢都是為瞭生活後緒以上就是今天整理的內容。嗯~,對瞭,各個瀏覽器對此的支持度very good。更加詳細內容啥的,可以直接戳我下面的參考。在日常的web工作中,明白HTTP狀態碼是一個必備的活,起碼在出錯的時候,知道瀏覽器和服務器的交流障礙在哪裡啦~參考HTTP Status CodesHTTP Explained: The HTTP Request Status Code Guide (Complete)HTTP 響應代碼


本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.xiaosb.com/beian/52228/