新聞動態(tài)
HTTP協(xié)議狀態(tài)碼,網(wǎng)站故障排查利器
常見問題 發(fā)布者:cya 2019-12-03 08:41 訪問量:267
來自:張善友
鏈接:http://www.cnblogs.com/shanyou/archive/2012/05/06/2486134.html
HTTP協(xié)議狀態(tài)碼詳解(HTTP Status Code)
一些常見的狀態(tài)碼:
200 – 服務器成功返回網(wǎng)頁
404 – 請求的網(wǎng)頁不存在
503 – 服務不可用
1xx(臨時響應)
表示臨時響應并需要請求者繼續(xù)執(zhí)行操作的狀態(tài)代碼。
100 (繼續(xù)) 請求者應當繼續(xù)提出請求。服務器返回此代碼表示已收到請求的第一部分,正在等待其余部分。
101 (切換協(xié)議) 請求者已要求服務器切換協(xié)議,服務器已確認并準備切換。
2xx (成功)
表示成功處理了請求的狀態(tài)代碼。
200 (成功) 服務器已成功處理了請求。通常,這表示服務器提供了請求的網(wǎng)頁。
201 (已創(chuàng)建) 請求成功并且服務器創(chuàng)建了新的資源。
202 (已接受) 服務器已接受請求,但尚未處理。
203 (非授權(quán)信息) 服務器已成功處理了請求,但返回的信息可能來自另一來源。
204 (無內(nèi)容) 服務器成功處理了請求,但沒有返回任何內(nèi)容。
205 (重置內(nèi)容) 服務器成功處理了請求,但沒有返回任何內(nèi)容。
206 (部分內(nèi)容) 服務器成功處理了部分 GET 請求。
3xx (重定向)
表示要完成請求,需要進一步操作。通常,這些狀態(tài)代碼用來重定向。
300 (多種選擇) 針對請求,服務器可執(zhí)行多種操作。服務器可根據(jù)請求者 (user agent) 選擇一項操作,或提供操作列表供請求者選擇。
301 (永久移動) 請求的網(wǎng)頁已永久移動到新位置。服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉(zhuǎn)到新位置。
302 (臨時移動) 服務器目前從不同位置的網(wǎng)頁響應請求,但請求者應繼續(xù)使用原有位置來進行以后的請求。
303 (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼。
304 (未修改) 自從上次請求后,請求的網(wǎng)頁未修改過。服務器返回此響應時,不會返回網(wǎng)頁內(nèi)容。
305 (使用代理) 請求者只能使用代理訪問請求的網(wǎng)頁。如果服務器返回此響應,還表示請求者應使用代理。
307 (臨時重定向) 服務器目前從不同位置的網(wǎng)頁響應請求,但請求者應繼續(xù)使用原有位置來進行以后的請求。
4xx(請求錯誤)
這些狀態(tài)代碼表示請求可能出錯,妨礙了服務器的處理。
400 (錯誤請求) 服務器不理解請求的語法。
401 (未授權(quán)) 請求要求身份驗證。對于需要登錄的網(wǎng)頁,服務器可能返回此響應。
403 (禁止) 服務器拒絕請求。
404 (未找到) 服務器找不到請求的網(wǎng)頁。
405 (方法禁用) 禁用請求中指定的方法。
406 (不接受) 無法使用請求的內(nèi)容特性響應請求的網(wǎng)頁。
407 (需要代理授權(quán)) 此狀態(tài)代碼與 401(未授權(quán))類似,但指定請求者應當授權(quán)使用代理。
408 (請求超時) 服務器等候請求時發(fā)生超時。
409 (沖突) 服務器在完成請求時發(fā)生沖突。服務器必須在響應中包含有關(guān)沖突的信息。
410 (已刪除) 如果請求的資源已永久刪除,服務器就會返回此響應。
411 (需要有效長度) 服務器不接受不含有效內(nèi)容長度標頭字段的請求。
412 (未滿足前提條件) 服務器未滿足請求者在請求中設置的其中一個前提條件。
413 (請求實體過大) 服務器無法處理請求,因為請求實體過大,超出服務器的處理能力。
414 (請求的 URI 過長) 請求的 URI(通常為網(wǎng)址)過長,服務器無法處理。
415 (不支持的媒體類型) 請求的格式不受請求頁面的支持。
416 (請求范圍不符合要求) 如果頁面無法提供請求的范圍,則服務器會返回此狀態(tài)代碼。
417 (未滿足期望值) 服務器未滿足”期望”請求標頭字段的要求。
5xx(服務器錯誤)
這些狀態(tài)代碼表示服務器在嘗試處理請求時發(fā)生內(nèi)部錯誤。這些錯誤可能是服務器本身的錯誤,而不是請求出錯。
500 (服務器內(nèi)部錯誤) 服務器遇到錯誤,無法完成請求。
501 (尚未實施) 服務器不具備完成請求的功能。例如,服務器無法識別請求方法時可能會返回此代碼。
502 (錯誤網(wǎng)關(guān)) 服務器作為網(wǎng)關(guān)或代理,從上游服務器收到無效響應。
503 (服務不可用) 服務器目前無法使用(由于超載或停機維護)。通常,這只是暫時狀態(tài)。
504 (網(wǎng)關(guān)超時) 服務器作為網(wǎng)關(guān)或代理,但是沒有及時從上游服務器收到請求。
505 (HTTP 版本不受支持) 服務器不支持請求中所用的 HTTP 協(xié)議版本。
RFC 6585 最近剛剛發(fā)布,該文檔描述了 4 個新的 HTTP 狀態(tài)碼。
HTTP 協(xié)議還在變化?是的,HTTP 協(xié)議一直在演變,新的狀態(tài)碼對于開發(fā) REST 服務或者說是基于 HTTP 的服務非常有用,下面我們?yōu)槟阍敿毥榻B這四個新的狀態(tài)碼以及是否應該使用。
先決條件是客戶端發(fā)送 HTTP 請求時,如果想要請求能成功必須滿足一些預設的條件。
一個好的例子就是 If-None-Match 頭,經(jīng)常在 GET 請求中使用,如果指定了 If-None-Match ,那么客戶端只在響應中的 ETag 改變后才會重新接收回應。
先決條件的另外一個例子就是 If-Match 頭,這個一般用在 PUT 請求上用于指示只更新沒被改變的資源,這在多個客戶端使用 HTTP 服務時用來防止彼此間不會覆蓋相同內(nèi)容。
當服務器端使用 428 Precondition Required 狀態(tài)碼時,表示客戶端必須發(fā)送上述的請求頭才能執(zhí)行請求,這個方法為服務器提供一種有效的方法來阻止 'lost update' 問題。
當你需要限制客戶端請求某個服務數(shù)量時,該狀態(tài)碼就很有用,也就是請求速度限制。
在此之前,有一些類似的狀態(tài)碼,例如 '509 Bandwidth Limit Exceeded'. Twitter 使用 420 (這不是HTTP定義的狀態(tài)碼)
如果你希望限制客戶端對服務的請求數(shù),可使用 429 狀態(tài)碼,同時包含一個 Retry-After 響應頭用于告訴客戶端多長時間后可以再次請求服務。
某些情況下,客戶端發(fā)送 HTTP 請求頭會變得很大,那么服務器可發(fā)送 431 Request Header Fields Too Large 來指明該問題。
我不太清楚為什么沒有 430 狀態(tài)碼,而是直接從 429 跳到 431,我嘗試搜索但沒有結(jié)果。唯一的猜測是 430 Forbidden 跟 403 Forbidden 太像了,為了避免混淆才這么做的,天知道!
對我來說這個狀態(tài)碼很有趣,如果你在開發(fā)一個 HTTP 服務器,你不一定需要處理該狀態(tài)碼,但如果你在編寫 HTTP 客戶端,那這個狀態(tài)碼就非常重要。
如果你頻繁使用筆記本和智能手機,你可能會注意到大量的公用 WIFI 服務要求你必須接受一些協(xié)議或者必須登錄后才能使用。
這是通過攔截HTTP流量,當用戶試圖訪問網(wǎng)絡返回一個重定向和登錄,這很討厭,但是實際情況就是這樣的。
使用這些“攔截”客戶端,會有一些討厭的副作用。在 RFC 中有提到這兩個的例子:
如果你在登錄WIFI前訪問某個網(wǎng)站,網(wǎng)絡設備將會攔截首個請求,這些設備往往也有自己的網(wǎng)站圖標 ‘favicon.ico'。登錄后您會發(fā)現(xiàn),有一段時間內(nèi)你訪問的網(wǎng)站圖標一直是WIFI登錄網(wǎng)站的圖標。
如果客戶端使用HTTP請求來查找文檔(可能是JSON),網(wǎng)絡將會響應一個登錄頁,這樣你的客戶端就會解析錯誤并導致客戶端運行異常,在現(xiàn)實中這種問題非常常見。
因此 511 狀態(tài)碼的提出就是為了解決這個問題。
如果你正在編寫 HTTP 的客戶端,你最好還是檢查 511 狀態(tài)碼以確認是否需要認證后才能訪問。
關(guān)鍵字: HTTP協(xié)議 狀態(tài)碼 晨展科技
文章連接: http://m.hsjyfc.com.cn/cjwt/629.html
版權(quán)聲明:文章由 晨展科技 整理收集,來源于互聯(lián)網(wǎng)或者用戶投稿,如有侵權(quán),請聯(lián)系我們,我們會立即刪除。如轉(zhuǎn)載請保留