HTTP的響應狀態碼有哪些

http是一個應用層協議,雖然在2015年已推出http/2版本,并被主要的web瀏覽器和web服務器支持。

它的主要特點可概括如下:

支持客戶/服務器模式。

簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。由于HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。

靈活:HTTP允許傳輸任意類型的數據對象。正在傳輸的類型由Content-Type加以標記。

無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,并收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。

無狀態:HTTP協議是無狀態協議。無狀態是指協議對于事務處理沒有記憶能力。缺少狀態意味著如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。為了解決這個問題, Web程序引入了Cookie機制來維護狀態。

另外,HTTP請求報文和響應報文都是由開始行(對于請求消息,開始行就是請求行,對于響應消息,開始行就是狀態行),消息報頭(可選),空行(只有CRLF的行),消息正文(可選)組成。

那么作為軟件測試員,了解一些服務器返回的HTTP狀態的意思是必不可少的,只有弄清楚這些狀態碼,工作中才會得心應手,下面我們就來全面的了解下HTTP狀態碼:

響應狀態碼

狀態代碼由三位數字組成,第一個數字定義了響應的類別,且有五種可能取值。

1xx:指示信息–表示請求已接收,繼續處理。

2xx:成功–表示請求已被成功接收、理解、接受。

3xx:重定向–要完成請求必須進行更進一步的操作。

4xx:客戶端錯誤–請求有語法錯誤或請求無法實現。

5xx:服務器端錯誤–服務器未能實現合法的請求。

常用狀態碼:

1xx – 信息提示

這些狀態代碼表示臨時的響應。客戶端在收到常規響應之前,應準備接收一個或多個1xx 響應。

· 100 – Continue 初始的請求已經接受,客戶應當繼續發送請求的其余部分。?

· 101 – Switching Protocols 服務器將遵從客戶的請求轉換到另外一種協議。

2xx – 成功

這類狀態代碼表明服務器成功地接受了客戶端請求。

· 200 – OK 一切正常,對GET和POST請求的應答文檔跟在后面。?

· 201 – Created 服務器已經創建了文檔,Location頭給出了它的URL。?

· 202 – Accepted 已經接受請求,但處理尚未完成。?

· 203 – Non-Authoritative Information 文檔已經正常地返回,但一些應答頭可能不正確,因為使用的是文檔的拷貝,非權威性信息。

· 204 – No Content 沒有新文檔,瀏覽器應該繼續顯示原來的文檔。如果用戶定期地刷新頁面,而Servlet可以確定用戶文檔足夠新,這個狀態代碼是很有用的。?

· 205 – Reset Content 沒有新的內容,但瀏覽器應該重置它所顯示的內容。用來強制瀏覽器清除表單輸入內容。?

· 206 – Partial Content 客戶發送了一個帶有Range頭的GET請求(分塊請求),服務器完成了它。

3xx – 重定向

客戶端瀏覽器必須采取更多操作來實現請求。例如,瀏覽器可能不得不請求服務器上的不同的頁面,或通過代理服務器重復該請求。

· 300 – Multiple Choices 客戶請求的文檔可以在多個位置找到,這些位置已經在返回的文檔內列出。如果服務器要提出優先選擇,則應該在Location應答頭指明。?

· 301 – Moved Permanently 客戶請求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應該自動地訪問新的URL。?

· 302 – Found 類似于301,但新的URL應該被視為臨時性的替代,而不是永久性的。注意,在HTTP1.0中對應的狀態信是“Moved Temporatily”。出現該狀態代碼時,瀏覽器能夠自動訪問新的URL,因此它是一個很有用的狀態代碼。注意這個狀態代碼有時候可以和301替換使 用。有的服務器返回301,有的則返回302。嚴格地說,我們只能假定只有當原來的請求是GET時瀏覽器才會自動重定向。請參見307。

· 303 – See Other 類似于301/302,不同之處在于,如果原來的請求是POST,Location頭指定的重定向目標文檔應該通過GET提取。?

· 304 – Not Modified 客戶端有緩沖的文檔并發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續使用。

· 305 – Use Proxy 客戶請求的文檔應該通過Location頭所指明的代理服務器提取(HTTP 1.1新)。?

· 307 – Temporary Redirect 和302(Found)相同。許多瀏覽器會錯誤地響應302應答進行重定向,即使原來的請求是POST,即使它實際上只能在POST請求的應答是303時 才能重定向。由于這個原因,HTTP 1.1新增了307,以便更加清除地區分幾個狀態代碼:當出現303應答時,瀏覽器可以跟隨重定向的GET和POST請求;如果是307應答,則瀏覽器只能跟隨對GET請求的重定向。

4xx – 客戶端錯誤

這些狀態代碼表示,請求可能出錯,已妨礙了服務器對請求的處理。

· 400 – Bad Request (錯誤請求) 服務器不理解請求的語法。?

· 401 – Unauthorized (未授權) 請求要求進行身份驗證。登錄后,服務器可能會返回對頁面的此響應。應答中會包含一個WWW-Authenticate頭,瀏覽器據此顯示用戶名字/密碼對話框,然后在填寫合適的Authorization頭后再次發出請求。IIS 定義了許多不同的 401 錯誤,它們指明更為具體的錯誤原因。這些具體的錯誤代碼在瀏覽器中顯示,但不在 IIS 日志中顯示:

· 401.1 – 登錄失敗。

· 401.2 – 服務器配置導致登錄失敗。

· 401.3 – 由于 ACL 對資源的限制而未獲得授權。

· 401.4 – 篩選器授權失敗。

· 401.5 – ISAPI/CGI 應用程序授權失敗。

· 401.7 – 訪問被 Web 服務器上的 URL 授權策略拒絕。這個錯誤代碼為 IIS 6.0 所專用。

· 403 – Forbidden(已禁止) 服務器拒絕請求。通常由于服務器上文件或目錄的權限設置導致。禁止訪問:IIS 定義了許多不同的 403 錯誤,它們指明更為具體的錯誤原因:

· 403.1 – 執行訪問被禁止。

· 403.2 – 讀訪問被禁止。

· 403.3 – 寫訪問被禁止。

· 403.4 – 要求 SSL。

· 403.5 – 要求 SSL 128。

· 403.6 – IP 地址被拒絕。

· 403.7 – 要求客戶端證書。

· 403.8 – 站點訪問被拒絕。

· 403.9 – 用戶數過多。

· 403.10 – 配置無效。

· 403.11 – 密碼更改。

· 403.12 – 拒絕訪問映射表。

· 403.13 – 客戶端證書被吊銷。

· 403.14 – 拒絕目錄列表。

· 403.15 – 超出客戶端訪問許可。

· 403.16 – 客戶端證書不受信任或無效。

· 403.17 – 客戶端證書已過期或尚未生效。

· 403.18 – 在當前的應用程序池中不能執行所請求的 URL。這個錯誤代碼為 IIS 6.0 所專用。

· 403.19 – 不能為這個應用程序池中的客戶端執行 CGI。這個錯誤代碼為 IIS 6.0 所專用。

· 403.20 – Passport登錄失敗。這個錯誤代碼為 IIS 6.0 所專用。

· 404 – Not Found(未找到) 服務器找不到請求的網頁。例如,如果請求是針對服務器上不存在的網頁進行的,那么,服務器通常會返回此代碼。?

· 404.0 -(無) – 沒有找到文件或目錄。

· 404.1 – 無法在所請求的端口上訪問 Web 站點。

· 404.2 – Web 服務擴展鎖定策略阻止本請求。

· 404.3 – MIME 映射策略阻止本請求。

· 405 – Method Not Allowed 請求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)對指定的資源不適用,用來訪問本頁面的 HTTP 謂詞不被允許(方法不被允許)

· 406 – Not Acceptable 指定的資源已經找到,但它的MIME類型和客戶在Accpet頭中所指定的不兼容,客戶端瀏覽器不接受所請求頁面的 MIME 類型。?

· 407 – Proxy Authentication Required (需要代理授權) 此狀態代碼與 401(未授權)類似,但卻指定了請求者應當使用代理進行授權。如果服務器返回此響應,那么,服務器還會指明請求者應當使用的代理。

· 408 – Request Timeout 在服務器許可的等待時間內,客戶一直沒有發出任何請求。客戶可以在以后重復同一請求。

· 409 – Conflict (沖突) 服務器在完成請求時發生沖突。服務器必須包含有關響應中所發生的沖突的信息。服務器在響應與前一個請求相沖突的 PUT 請求時可能會返回此代碼,同時會提供兩個請求的差異列表。

· 410 – Gone 所請求的文檔已經不再可用,而且服務器不知道應該重定向到哪一個地址。它和404的不同在于,返回407表示文檔永久地離開了指定的位置,而404表示由于未知的原因文檔不可用。

· 411 – Length Required (需要有效長度) 服務器不會接受包含無效內容長度標頭字段的請求,除非客戶發送一個Content-Length頭。

· 412 – Precondition Failed 請求頭中指定的一些前提條件失敗。

· 413 – Request Entity Too Large 目標文檔的大小超過服務器當前愿意處理的大小。如果服務器認為自己能夠稍后再處理該請求,則應該提供一個Retry-After頭。

· 414 – Request URI Too Long URI太長。?

· 415 – 不支持的媒體類型。

· 416 – Requested Range Not Satisfiable 服務器不能滿足客戶在請求中指定的Range頭。

·417 – 執行失敗。

· 423 – 鎖定的錯誤。

5xx – 服務器錯誤

這些狀態代碼表示,服務器在嘗試處理請求時發生內部錯誤。這些錯誤可能是服務器本身的錯誤,而不是請求出錯。

· 500 – Internal Server Error(服務器內部錯誤) 服務器遇到錯誤,無法完成請求。?

· 500.12 – 應用程序正忙于在 Web 服務器上重新啟動。

· 500.13 – Web 服務器太忙。

· 500.15 – 不允許直接請求 Global.asa。

· 500.16 – UNC 授權憑據不正確。這個錯誤代碼為 IIS 6.0 所專用。

· 500.18 – URL 授權存儲不能打開。這個錯誤代碼為 IIS 6.0 所專用。

· 500.100 – 內部 ASP 錯誤。

· 501 – Not Implemented(尚未實施) 服務器不具備完成請求的功能。例如,當服務器無法識別請求方法時,服務器可能會返回此代碼。

· 502 – Bad Gateway(錯誤網關) 服務器作為網關或代理,從上游服務器收到了無效的響應。

· 502.1 – CGI 應用程序超時。

· 502.2 – CGI 應用程序出錯。

· 503 – Service Unavailable (服務不可用) 目前無法使用服務器(由于超載或進行停機維護)。通常,這只是一種暫時的狀態。

· 504 – Gateway Timeout (網關超時) 服務器作為網關或代理,未及時從上游服務器接收請求。

· 505 – HTTP Version Not Supported (HTTP 版本不受支持) 服務器不支持請求中所使用的 HTTP 協議版本。

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享