HTTP伺服器狀態碼大全解析

HTTP伺服器狀態代碼解析

在做介面測試、性能測試的時候,會產生比較多的HTTP錯誤查看其錯誤,有超時的,鏈接不到圖片的,連接不到伺服器等。所以這塊知識總結下。

HTTP伺服器狀態代碼定義(Status Code Definitions)

1.1 消息1xx(Informational 1xx)

該類狀態代碼用於表示臨時回應。臨時回應由狀態行(Status-Line)及可選標題組成, 由空行終止。HTTP/1.0中沒有定義任何1xx的狀態代碼,所以它們不是對HTTP/1.0請求的   合法回應。實際上,它們主要用於實驗用途,這已經超出本文檔的範圍。

1.2 成功2xx(Successful 2xx)

表示客戶端請求被成功接收、理解、接受。

200 OK

請求成功。回應的信息依賴於請求所使用的方法,如下:

GET 要請求的資源已經放在回應的實體中了。

HEAD 沒有實體主體,回應中只包括標題信息。

POST 實體(描述或包含操作的結果)。

201 Created

請求完成,結果是創建了新資源。新創建資源的URI可在回應的實體中得到。原始伺服器應在發出該狀態代碼前創建該資源。如果該操作不能立即完成,伺服器必須在該資源可用時在回應主體中給出提示,否則,伺服器端應回應202(可被接受)。

在本文定義的方法,只有POST可以創建資源。

202 Accepted

請求被接受,但處理尚未完成。請求可能不一定會最終完成,有可能被處理過程隨時中斷,在這種情況下,沒有辦法在非同步操作中重新發送狀態代碼。

202回應是沒有義務的,這樣做的目的是允許伺服器不必等到用戶代理和伺服器間的連接結束,就可以響應其它過程的請求(象每天運行一次的,基於批處理的過程)。

在某些回應中返回的實體中包括當前請求的狀態指示、狀態監視器指針或用戶對請求能否實現的評估信息。

204 No Content

伺服器端已經實現了請求,但是沒有返回新的信息。如果客戶是用戶代理,則勿需為此更新自身的文檔視圖。該回應主要是為了在不影響用戶代理激活文檔視圖的前提下,進行script語句的輸入及其它操作。該回應還可能包括新的、以實體標題形式表示的元信息,它可被當前用戶代理激活視圖中的文檔所使用。

1.3 重定向(Redirection 3xx)

該類狀態碼錶示用戶代理要想完成請求,還需要發出進一步的操作。這些操作只有當後跟的請求是GET或HEAD時,才可由用戶代理來實現,而不用與用戶進行交互。用戶代理永遠也不要對請求進行5次以上的重定向操作,這樣可能導致無限循環。

300 Multiple Choices

該狀態碼不被HTTP/1.0的應用程序直接使用,只是做為3xx類型回應的預設解釋。存在多個可用的被請求資源。

除非是HEAD請求,否則回應的實體中必須包括這些資源的字元列表及位置信息,由用戶或用戶代理來決定哪個是最適合的。

如果伺服器有首選,它應將對應的URL信息存放在位置域(Location field)處,用戶代理會根據此域的值來實現自動的重定向。

301 Moved Permanently

請求到的資源都會分配一個永久的URL,這樣就可以在將來通過該URL來訪問此資源。有編輯鏈接功能的客戶端會儘可能地根據伺服器端傳回的新鏈接而自動更新請求URI。 新的URL必須由回應中的位置域指定。除非是HEAD請求,否則回應的實體主體   (Entity-Body)必須包括對新URL超鏈接的簡要描述。

如果用POST方法發出請求,而接收到301回應狀態碼。在這種情況下,除非用戶確認,否則用戶代理不必自動重定向請求,因為這將導致改變已發出請求的環境。

注意:當在接收到301狀態碼後而自動重定向POST請求時,一些現存的用戶代理會錯誤地將其改為GET請求。

302 Moved Temporarily

請求到的資源在一個不同的URL處臨時保存。因為重定向有時會被更改,客戶端應繼續用請求URI來發出以後的請求。新的URL必須由回應中的位置域指定。除非是HEAD請求,否則回應的實體主體 (Entity-Body)必須包括對新URL超鏈接的簡要描述。

如果用POST方法發出請求,而接收到302回應狀態碼。在這種情況下,除非用戶確認,否則用戶代理不必自動重定向請求,因為這將導致改變已發出請求的環境。

注意:當在接收到302狀態碼後而自動重定向POST請求時,一些現存的用戶代理會錯誤地將其改為GET請求。

304 Not Modified

如果客戶端成功執行了條件GET請求,而對應文件自If-Modified-Since域所指定的日期以來就沒有更新過,伺服器應當回應此狀態碼,而不是將實體主體發送給客戶端。回應標題域中只應包括一些相關信息,比如緩存管理器、與實體最近更新(entitys Last-Modified)日期無關的修改。相關標題域的例子有:日期、伺服器、過期時間。每當304回應中給出的域值發生變化,緩存都應當對緩存的實體進行更新。

1.4 客戶端錯誤(Client Error )4xx

4xx類的狀態碼錶示客戶端發生錯誤。如果客戶端在收到4xx代碼時請求還沒有完成,它應當立即終止向伺服器發送數據。除了回應HEAD請求外,不論錯誤是臨時的還是永久的,伺服器端都必須在回應的實體中包含錯誤狀態的解釋。這些狀態碼適用於任何請求方法。

注意:如果客戶端正在發送數據,伺服器端的TCP實現應當小心,以確保客戶端在關閉輸入連接之前收到回應包。如果客戶端在關閉後仍舊向伺服器發送數據,伺服器會給客戶  端發送一個複位包,清空客戶端尚未處理的輸入緩衝區,以終止HTTP應用程序的讀取、解釋活動。

400 非法請求(Bad Request)

如果請求的語法不對,伺服器將無法理解。客戶端在對該請求做出更改之前,不應再次向伺服器重複發送該請求。

401 未授權(Unauthorized)

請求需要用戶授權。回應中的WWW-Authenticate標題域(10.16節)應提示用戶以授權方式請求資源。客戶端應使用合適的授權標題域(10.2節)來重複該請求。如果請求中已經包括了授權信任信息,那回應的401表示此授權被拒絕。如果用戶代理在多次嘗試之後,回應一樣還是返回401狀態代碼,用戶應當察看一下回應的實體,因為在實體中會包括一些相關的動態信息。HTTP訪問授權會在11節中解釋。

403 禁止(Forbidden)

伺服器理解請求,但是拒絕實現該請求。授權對此沒有幫助,客戶端應當停止重複發送此請求。如果不是用HEAD請求方法,而且伺服器端願意公布請求未被實現原因的前提下,伺服器會將拒絕原因寫在回應實體中。該狀態碼一般用於伺服器端不想公布請求被拒絕的細節或沒有其它的回應可用。

404 沒有找到(Not Found)

伺服器沒有找到與請求URI相符的資源。404狀態碼並不指明狀況是臨時性的還是永久性的。如果伺服器不希望為客戶端提供這方面的信息,還回應403(禁止)狀態碼。

1.5 伺服器錯誤(Server Error )5xx

回應代碼以『5』開頭的狀態碼錶示伺服器端發現自己出現錯誤,不能繼續執行請求。如果客戶端在收到5xx狀態碼時,請求尚未完成,它應當立即停止向伺服器發送數據。除了回應HEAD請求外,伺服器應當在其回應實體中包括對錯誤情況的解釋、並指明是臨時性的還永久性的。

這類回應代碼沒有標題域,可適用於任何請求方法。

500 伺服器內部錯誤(Internal Server Error)

伺服器碰到了意外情況,使其無法繼續回應請求。

501 未實現(Not Implemented)

伺服器無法提供對請求中所要求功能的支持。如果伺服器無法識別請求方法就會回應此狀態代碼,這意味著不能回應請求所要求的任何資源。

502 非法網關(Bad Gateway)

充當網關或代理的伺服器從要發送請求的上游(upstream)伺服器收到非法的回應。

503 服務不可用(Service Unavailable)

伺服器當前無法處理請求。這一般是由於伺服器臨時性超載或維護引起的。該狀態碼暗示情況是暫時性的,要產生一些延遲。

注意:503狀態碼並沒有暗示伺服器在超載時一定要返回此狀態碼。一些伺服器可能希望在超載時採用簡單處理,即斷掉連接。

IIS 錯誤代碼大匯總

400 無法解析此請求。 401.1 未經授權:訪問由於憑據無效被拒絕。

401.2 未經授權: 訪問由於伺服器配置傾向使用替代身份驗證方法而被拒絕。

401.3 未經授權:訪問由於 ACL 對所請求資源的設置被拒絕。

401.4 未經授權:Web 伺服器上安裝的篩選器授權失敗。

401.5 未經授權:ISAPI/CGI 應用程序授權失敗。

401.7 未經授權:由於 Web 伺服器上的 URL 授權策略而拒絕訪問。

403 禁止訪問:訪問被拒絕。

403.1 禁止訪問:執行訪問被拒絕。

403.2 禁止訪問:讀取訪問被拒絕。

403.3 禁止訪問:寫入訪問被拒絕。

403.4 禁止訪問:需要使用 SSL 查看該資源。

403.5 禁止訪問:需要使用 SSL 128 查看該資源。

403.6 禁止訪問:客戶端的 IP 地址被拒絕。

403.7 禁止訪問:需要 SSL 客戶端證書。

403.8 禁止訪問:客戶端的 DNS 名稱被拒絕。

403.9 禁止訪問:太多客戶端試圖連接到 Web 伺服器。

403.10 禁止訪問:Web 伺服器配置為拒絕執行訪問。

403.11 禁止訪問:密碼已更改。

403.12 禁止訪問:伺服器證書映射器拒絕了客戶端證書訪問。

403.13 禁止訪問:客戶端證書已在 Web 伺服器上吊銷。

403.14 禁止訪問:在 Web 伺服器上已拒絕目錄列表。

403.15 禁止訪問:Web 伺服器已超過客戶端訪問許可證限制。

403.16 禁止訪問:客戶端證書格式錯誤或未被 Web 伺服器信任。

403.17 禁止訪問:客戶端證書已經到期或者尚未生效。

403.18 禁止訪問:無法在當前應用程序池中執行請求的 URL。

403.19 禁止訪問:無法在該應用程序池中為客戶端執行 CGI。

403.20 禁止訪問:Passport 登錄失敗。

404 找不到文件或目錄。

404.1 文件或目錄未找到:網站無法在所請求的埠訪問。

注意 404.1 錯誤只會出現在具有多個 IP 地址的計算機上。如果在特定 IP 地址/埠組合上收到客戶端請求,而且沒有將 IP 地址配置為在該特定的埠上偵聽,則 IIS 返回 404.1 HTTP 錯誤。例如,如果一台計算機有兩個 IP 地址,而只將其中一個 IP 地址配置為在埠 80 上偵聽,則另一個 IP 地址從埠 80 收到的任何請求都將導致 IIS 返回 404.1 錯誤。只應在此服務級別設置該錯誤,因為只有當伺服器上使用多個 IP 地址時才會將它返回給客戶端。

404.2 文件或目錄無法找到:鎖定策略禁止該請求。

404.3 文件或目錄無法找到:MIME 映射策略禁止該請求。

405 用於訪問該頁的 HTTP 動作未被許可。

406 客戶端瀏覽器不接受所請求頁面的 MIME 類型。

407 Web 伺服器需要初始的代理驗證。

410 文件已刪除。

412 客戶端設置的前提條件在 Web 伺服器上評估時失敗。

414 請求 URL 太大,因此在 Web 伺服器上不接受該 URL。

500 伺服器內部錯誤。

500.11 伺服器錯誤:Web 伺服器上的應用程序正在關閉。

500.12 伺服器錯誤:Web 伺服器上的應用程序正在重新啟動。

500.13 伺服器錯誤:Web 伺服器太忙。

500.14 伺服器錯誤:伺服器上的無效應用程序配置。

500.15 伺服器錯誤:不允許直接請求 GLOBAL.ASA。

500.16 伺服器錯誤:UNC 授權憑據不正確。

500.17 伺服器錯誤:URL 授權存儲無法找到。

500.18 伺服器錯誤:URL 授權存儲無法打開。

500.19 伺服器錯誤:該文件的數據在配置資料庫中配置不正確。

500.20 伺服器錯誤:URL 授權域無法找到。

500 100 內部伺服器錯誤:ASP 錯誤。

501 標題值指定的配置沒有執行。

502 Web 伺服器作為網關或代理伺服器時收到無效的響應。

既然這麼認真的看完了,不想轉發或讚賞的話,能否順手點個贊或留言呢。

作者:西邊人

公眾號(軟體測試資源站):testpu

今日頭條搜索 軟體測試資源站 各種測試工具打包下載


推薦閱讀:

面試軟體測試工程師時,問你對這個桌子怎麼測試?
優秀的測試工程師如何進行需求分析?
乾貨分享|UI自動化如何定位下拉框(Python)?
給大家來6段你遲早用的上的常用linux 實戰命令

TAG:HTTP | 软件测试工程师 | 软件测试 |