HTTP響應碼

一、HTTP響應碼

 

響應碼由三位十進制數字組成,它們出現在由HTTP服務器發送的響應的第一行。

 

響應碼分五種類型,由它們的第一位數字表示:

1.1xx:信息,請求收到,繼續處理

2.2xx:成功,行爲被成功地接受、理解和採納

3.3xx:重定向,爲了完成請求,必須進一步執行的動作

4.4xx:客戶端錯誤,請求包含語法錯誤或者請求無法實現

5.5xx:服務器錯誤,服務器不能實現一種明顯無效的請求

 

下表顯示每個響應碼及其含義:

代碼  意義

2xx  成功

200  正常;請求已完成。

201  正常;緊接 POST 命令。

202  正常;已接受用於處理,但處理尚未完成。

203  正常;部分信息 返回的信息只是一部分。

204  正常;無響應 已接收請求,但不存在要回送的信息。

3xx  重定向

301  已移動 請求的數據具有新的位置且更改是永久的。

302  已找到 請求的數據臨時具有不同 URI

303  請參閱其它 可在另一 URI 下找到對請求的響應,且應使用 GET 方法檢索此響應。

304  未修改 未按預期修改文檔。

305  使用代理 必須通過位置字段中提供的代理來訪問請求的資源。

306  未使用 不再使用;保留此代碼以便將來使用。

307  暫時重定向

4xx  客戶機中出現的錯誤

400  錯誤請求 請求中有語法問題,或不能滿足請求。

401  未授權 未授權客戶機訪問數據。

402  需要付款 表示計費系統已有效。

403  禁止 即使有授權也不需要訪問。

404  找不到 服務器找不到給定的資源;文檔不存在。

405  錯誤的方法

406  沒有可接受的

407  代理認證請求 客戶機首先必須使用代理認證自身。

408  請求超時

409  衝突

410  已離開

411  需要長度

412  前提條件失敗

413  請求實體太大

414  請求的 URI 太長

415  介質類型不受支持 服務器拒絕服務請求,因爲不支持請求實體的格式。

416  請求的範圍不滿足要求

417  期望失敗

5xx  服務器中出現的錯誤

500  內部錯誤 因爲意外情況,服務器不能完成請求。

501  未執行 服務器不支持請求的工具。

502  錯誤網關 服務器接收到來自上游服務器的無效響應。

503  無法獲得服務 由於臨時過載或維護,服務器無法處理請求。

504  網關超時

505  HTTP 版本不受支持

 

二、HTTP頭標

頭標由主鍵/值對組成。它們描述客戶端或者服務器的屬性、被傳輸的資源以及應該實現連接。

 

四種不同類型的頭標:

1.通用頭標:即可用於請求,也可用於響應,是作爲一個整體而不是特定資源與事務相關聯。

2.請求頭標:允許客戶端傳遞關於自身的信息和希望的響應形式。

3.響應頭標:服務器和於傳遞自身信息的響應。

4.實體頭標:定義被傳送資源的信息。即可用於請求,也可用於響應。

 

頭標格式:<name>:<value><CRLF>

 

下表描述在HTTP/1.1中用到的頭標

Accept 定義客戶端可以處理的媒體類型,按優先級排序;

在一個以逗號爲分隔的列表中,可以定義多種類型和使用通配符。例如:Accept: image/jpeg,image/png,*/*

Accept-Charset 定義客戶端可以處理的字符集,按優先級排序;

在一個以逗號爲分隔的列表中,可以定義多種類型和使用通配符。例如:Accept-Charset: iso-8859-1,*,utf-8

Accept-Encoding 定義客戶端可以理解的編碼機制。例如:Accept-Encoding:gzip,compress

Accept-Language 定義客戶端樂於接受的自然語言列表。例如:Accept-Language: en,de

Accept-Ranges 一個響應頭標,它允許服務器指明:將在給定的偏移和長度處,爲資源組成部分的接受請求。

該頭標的值被理解爲請求範圍的度量單位。例如Accept-Ranges: bytesAccept-Ranges: none

Age 允許服務器規定自服務器生成該響應以來所經過的時間長度,以秒爲單位。

該頭標主要用於緩存響應。例如:Age: 30

Allow 一個響應頭標,它定義一個由位於請求URI中的次源所支持的HTTP方法列表。例如:Allow: GET,PUT

aUTHORIZATION 一個響應頭標,用於定義訪問一種資源所必需的授權(域和被編碼的用戶ID與口令)。

例如:Authorization: Basic YXV0aG9yOnBoaWw=

Cache-Control 一個用於定義緩存指令的通用頭標。例如:Cache-Control: max-age=30

Connection 一個用於表明是否保存socket連接爲開放的通用頭標。例如:Connection: closeConnection: keep-alive

Content-Base 一種定義基本URI的實體頭標,爲了在實體範圍內解析相對URLs

如果沒有定義Content-Base頭標解析相對URLs,使用Content-Location URI(存在且絕對)或使用URI請求。

例如:Content-Base: Http://www.myweb.com

Content-Encoding 一種介質類型修飾符,標明一個實體是如何編碼的。例如:Content-Encoding: zip

Content-Language 用於指定在輸入流中數據的自然語言類型。例如:Content-Language: en

Content-Length 指定包含於請求或響應中數據的字節長度。例如:Content-Length:382

Content-Location 指定包含於請求或響應中的資源定位(URI)。

如果是一絕。對URL它也作爲被解析實體的相對URL的出發點。

例如:Content-Location: http://www.myweb.com/news

Content-MD5 實體的一種MD5摘要,用作校驗和。

發送方和接受方都計算MD5摘要,接受方將其計算的值與此頭標中傳遞的值進行比較。

例如:Content-MD5: <base64 of 128 MD5 digest>

Content-Range 隨部分實體一同發送;標明被插入字節的低位與高位字節偏移,也標明此實體的總長度。

例如:Content-Range: 1001-2000/5000

Contern-Type 標明發送或者接收的實體的MIME類型。例如:Content-Type: text/html

Date 發送HTTP消息的日期。例如:Date: Mon,10PR 18:42:51 GMT

ETag 一種實體頭標,它向被髮送的資源分派一個唯一的標識符。

對於可以使用多種URL請求的資源,ETag可以用於確定實際被髮送的資源是否爲同一資源。

例如:ETag: "208f-419e-30f8dc99"

Expires 指定實體的有效期。例如:Expires: Mon,05 Dec 2008 12:00:00 GMT

Form 一種請求頭標,給定控制用戶代理的人工用戶的電子郵件地址。例如:From: [email protected]

Host 被請求資源的主機名。對於使用HTTP/1.1的請求而言,此域是強制性的。例如:Host: www.myweb.com

If-Modified-Since 如果包含了GET請求,導致該請求條件性地依賴於資源上次修改日期。

如果出現了此頭標,並且自指定日期以來,此資源已被修改,應該反回一個304響應代碼。

例如:If-Modified-Since: Mon,10PR 18:42:51 GMT

If-Match 如果包含於一個請求,指定一個或者多個實體標記。只發送其ETag與列表中標記區配的資源。

例如:If-Match: "208f-419e-308dc99"

If-None-Match 如果包含一個請求,指定一個或者多個實體標記。資源的ETag不與列表中的任何一個條件匹配,操作才執行。

例如:If-None-Match: "208f-419e-308dc99"

If-Range 指定資源的一個實體標記,客戶端已經擁有此資源的一個拷貝。必須與Range頭標一同使用。

如果此實體自上次被客戶端檢索以來,還不曾修改過,那麼服務器只發送指定的範圍,否則它將發送整個資源。

例如:Range: byte=0-499<CRLF>If-Range:"208f-419e-30f8dc99"

If-Unmodified-Since 只有自指定的日期以來,被請求的實體還不曾被修改過,纔會返回此實體。

例如:If-Unmodified-Since:Mon,10PR 18:42:51 GMT

Last-Modified 指定被請求資源上次被修改的日期和時間。例如:Last-Modified: Mon,10PR 18:42:51 GMT

Location 對於一個已經移動的資源,用於重定向請求者至另一個位置。

與狀態編碼302(暫時移動)或者301(永久性移動)配合使用。

例如:Location: http://www2.myweb.com/index.jsp

Max-Forwards 一個用於TRACE方法的請求頭標,以指定代理或網關的最大數目,該請求通過網關才得以路由。

在通過請求傳遞之前,代理或網關應該減少此數目。例如:Max-Forwards: 3

Pragma 一個通用頭標,它發送實現相關的信息。例如:Pragma: no-cache

Proxy-Authenticate 類似於WWW-Authenticate,便是有意請求只來自請求鏈(代理)的下一個服務器的認證。

例如:Proxy-Authenticate: Basic realm-admin

Proxy-Proxy-Authorization 類似於授權,但並非有意傳遞任何比在即時服務器鏈中更進一步的內容。

例如:Proxy-Proxy-Authorization: Basic YXV0aG9yOnBoaWw=

Public 列表顯示服務器所支持的方法集。例如:Public: OPTIONS,MGET,MHEAD,GET,HEAD

Range 指定一種度量單位和一個部分被請求資源的偏移範圍。例如:Range: bytes=206-5513

Refener 一種請求頭標域,標明產生請求的初始資源。對於HTML表單,它包含此表單的Web頁面的地址。

例如:Refener: http://www.myweb.com/news/search.html

Retry-After 一種響應頭標域,由服務器與狀態編碼503(無法提供服務)配合發送,以標明再次請求之前應該等待多長時間。

此時間即可以是一種日期,也可以是一種秒單位。例如:Retry-After: 18

Server 一種標明Web服務器軟件及其版本號的頭標。例如:Server: Apache/2.0.46(Win32)

Transfer-Encoding 一種通用頭標,標明對應被接受方反向的消息體實施變換的類型。例如:Transfer-Encoding: chunked

Upgrade 允許服務器指定一種新的協議或者新的協議版本,與響應編碼101(切換協議)配合使用。

例如:Upgrade: HTTP/2.0

User-Agent 定義用於產生請求的軟件類型(典型的如Web瀏覽器)。

例如:User-Agent: Mozilla/4.0(compatible; MSIE 5.5; Windows NT; DigExt)

Vary 一個響應頭標,用於表示使用服務器驅動的協商從可用的響應表示中選擇響應實體。例如:Vary: *

Via 一個包含所有中間主機和協議的通用頭標,用於滿足請求。例如:Via: 1.0 fred.com, 1.1 wilma.com

Warning 用於提供關於響應狀態補充信息的響應頭標。例如:Warning: 99 www.myweb.com Piano needs tuning

www-Authenticate 一個提示用戶代理提供用戶名和口令的響應頭標,與狀態編碼401(未授權)配合使用。響應一個授權頭標。

例如:www-Authenticate: Basic realm=zxm.mgmt

 

 

以下是兩個最常用的 HTTP 響應代碼的描述及應用場合:

404

找不到 URL 時,生成 404 HTTP 響應代碼。當不能聯繫到某個服務器或實際資源不存在時,發生該響應。例如,如果 Web 服務器主機 www.google.com 在進行維護而關閉或某個組件在升級,而用戶試圖查看 http://www.google.com,則該用戶將看到 404 響應。通常,404 響應通過 Web 瀏覽器以用戶友好的方式顯示。例如,Microsoft Internet Explorer 404 響應顯示一個特殊的錯誤頁面。

500

當服務器由於內部服務器錯誤而不能爲請求服務時,生成 500 HTTP 響應代碼。例如,500 HTTP 響應代碼可能通過以下事件序列生成:

開發者在 http://tests.mySoftwareDesignTestCases.org 上編寫並部署應用程序。

用戶訪問 http://tests.mySoftwareDesignTestCases.org/test12.jsp。與前面 404 響應代碼示例引用的頁面不同,該頁面存在且可以聯繫。

被訪問頁面上的代碼在某點被零分隔,造成內部應用程序錯誤。

當識別出該情況時,服務器返回 500 響應。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章