請(qǐng)求消息
其中請(qǐng)求消息的格式為:
例子:
POST /index.jsp?articleId=1234&articleName=GoodArticle HTTP/1.1 Host: www.blogjava.com Content-Length: 74 Content-Type: application/x-www-form-urlencoded myText1=hello+world&myText2=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C請(qǐng)求消息由三部分組成:請(qǐng)求行、消息報(bào)頭、請(qǐng)求正文。
請(qǐng)求行格式為:請(qǐng)求方法、空格、URL、版本號(hào)、回車、換行。請(qǐng)求方法集:GET、POST、HEAD、PUT、DELETE、TRACE、CONNECT、OPTIONS。URL中'?'之后的值用于表達(dá)請(qǐng)求參數(shù)。版本號(hào)可以是:HTTP/1.0、HTTP/1.1。
消息報(bào)頭格式為:報(bào)頭名字、冒號(hào)(':')、空格、報(bào)頭值、回車、換行。消息報(bào)頭用于傳遞元數(shù)據(jù)信息,用于表達(dá)消息正文的類型、編碼格式、緩存等,以回車換行結(jié)束。當(dāng)遇到一個(gè)空行(只有回車換行),表示消息報(bào)頭結(jié)束。
消息正文,可以是任意定義的格式,它接在消息報(bào)頭后(空行之后)。
請(qǐng)求消息是否包含消息體由Content-Length或Transfer-Encoding決定,如果規(guī)范定義的請(qǐng)求方法不允許包含消息體,則在請(qǐng)求消息中不可以包含消息體。Server在解析時(shí),如果請(qǐng)求方法不支持消息體,則在請(qǐng)求消息中包含的消息體會(huì)被忽略。
請(qǐng)求方法:
HTTP1.1定義的請(qǐng)求方法有
OPTIONS:
請(qǐng)求查詢服務(wù)器的性能,或查詢與資源相關(guān)的選項(xiàng)和需求。
GET:
請(qǐng)求獲取Request-URI所標(biāo)識(shí)的資源。
HEAD:
請(qǐng)求獲取由Request-URI所標(biāo)識(shí)的資源的響應(yīng)消息報(bào)頭。
POST:
在Request-URI所標(biāo)識(shí)的資源后附加新的數(shù)據(jù)。
PUT:
請(qǐng)求服務(wù)器存儲(chǔ)一個(gè)資源,并用Request-URI作為其標(biāo)識(shí)。
DELETE:
請(qǐng)求服務(wù)器刪除Request-URI所標(biāo)識(shí)的資源。
TRACE:
請(qǐng)求服務(wù)器會(huì)送收到的請(qǐng)求信息,主要用于測試或診斷。
CONNECT:
保留將來使用。
擴(kuò)展的方法:
用戶自定義擴(kuò)展方法。
如果Server能識(shí)別某個(gè)請(qǐng)求方法但是不允許該請(qǐng)求方法,則應(yīng)該返回405(Method Not Allowed)響應(yīng)狀態(tài)。如果Server無法識(shí)別某個(gè)請(qǐng)求方法或者當(dāng)前Server沒有實(shí)現(xiàn)這個(gè)請(qǐng)求方法,則應(yīng)該返回501(Not Implemented)狀態(tài)碼。
Request-URI支持的值有:*|absoluteURI|abs_path|authority
- *表示請(qǐng)求不應(yīng)用于某個(gè)特定的資源,并且只對(duì)于某些不需要應(yīng)用于特定資源的請(qǐng)求方法,如:OPTIONS * HTTP/1.1
- absoluteURI:當(dāng)客戶端是向一個(gè)代理發(fā)送請(qǐng)求時(shí)需要使用absoluteURI,然后這個(gè)代理會(huì)轉(zhuǎn)發(fā)這個(gè)請(qǐng)求,并返回響應(yīng)。雖然按規(guī)范,HTTP1.1客戶端只發(fā)送absoluteURI到代理服務(wù)器,但是為了在將來的HTTP版本中可以允許請(qǐng)求都轉(zhuǎn)換成absoluteURI,所有HTTP1.1 Server必須可以解析absoluteURI風(fēng)格的請(qǐng)求:GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
- authority只在CONNECT請(qǐng)求方法中使用。
- abs_path:用于表示Server的資源,而Server本身的信息在Host消息頭中表示:
GET /put/www/TheProject.html HTTP/1.1
Host: www.w3.org
Resource Identification rules:
- 如果Request-URI是absoluteURI,并且這個(gè)absolute的host和server的host相同,則忽略Host頭。
- 如果Request-URI不是absoluteURI,并且請(qǐng)求消息包含Host頭,host由Host消息頭決定。
- 如果1或2中的host不是一個(gè)合法的host,則返回400(Bad Request)響應(yīng)消息。
響應(yīng)消息
響應(yīng)消息的格式定義為:
例子:
HTTP/1.1 200 OK //請(qǐng)求成功 Server: Microsoft-IIS/5.0 //web服務(wù)器 Date: Thu,08 Mar 200707:17:51 GMT Connection: Keep-Alive Content-Length: 23330 Content-Type: text/html Expries: Thu,08 Mar 2007 07:16:51 GMT Set-Cookie: ASPSESSIONIDQAQBQQQB=BEJCDGKADEDJKLKKAJEOIMMH; path=/ Cache-control: private響應(yīng)消息也有三部分組成:狀態(tài)行、消息報(bào)頭、響應(yīng)正文。
狀態(tài)行格式:版本號(hào)、空格、狀態(tài)、空格、狀態(tài)短語、回車、換行。版本號(hào)可以是:HTTP/1.0、HTTP/1.1。狀態(tài)號(hào)和狀態(tài)短語由HTTP協(xié)議定義,狀態(tài)號(hào)有5中取值可能:
1xx:指示信息--表示請(qǐng)求已經(jīng)接收,繼續(xù)處理。
2xx:成功--表示請(qǐng)求已經(jīng)被成功接收、理解、處理。
3xx:重定向--要完成請(qǐng)求,必須進(jìn)行更進(jìn)一步操作。
4xx:客戶端錯(cuò)誤--請(qǐng)求有語法錯(cuò)誤或請(qǐng)求無法實(shí)現(xiàn)。
5xx:服務(wù)器端錯(cuò)誤--服務(wù)器未能實(shí)現(xiàn)合法的請(qǐng)求。
常見的狀態(tài)號(hào)和狀態(tài)短語有:
200 OK --請(qǐng)求成功。
304 Not Modified --資源沒有改變。
400 Bad Request --客戶端請(qǐng)求有語法錯(cuò)誤,不能被服務(wù)器理解。
401 Unauthorized --請(qǐng)求未經(jīng)授權(quán)(和WWW-Authenticate報(bào)頭一起使用)。
403 Forbidden --服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)。
404 Not Found --請(qǐng)求資源不存在。
500 Internal Server Error --服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤。
503 Server Unavailable --服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求,一段時(shí)間后可能恢復(fù)正常。
響應(yīng)報(bào)頭和請(qǐng)求報(bào)頭格式一樣:報(bào)頭名、冒號(hào)(':')、空格、報(bào)頭值、回車、換行。用于記錄響應(yīng)消息的元數(shù)據(jù),表達(dá)響應(yīng)消息的長度、編碼方式、Cookiee等信息。遇到一個(gè)空行(只有回車換行)表示響應(yīng)消息報(bào)頭結(jié)束。
響應(yīng)消息正文緊隨響應(yīng)消息報(bào)頭(在空行后),它可以是任意的內(nèi)容,由客戶端解析。
在響應(yīng)消息中是否包含消息體是由請(qǐng)求方法和響應(yīng)狀態(tài)碼決定,所有對(duì)HEAD請(qǐng)求方法的響應(yīng)消息不能包含任何消息體,即使在響應(yīng)消息中可能會(huì)包含實(shí)體消息頭,以至于有人會(huì)認(rèn)為這個(gè)響應(yīng)消息包含消息體。所有1XX(informational)、204(no content)、304(not modified)響應(yīng)消息不能包含消息體。所有其他的響應(yīng)消息都包含消息體,即使有些時(shí)候消息體的長度是0。
雜記
協(xié)議本身,最終要的在于消息格式,HTTP協(xié)議的請(qǐng)求消息和響應(yīng)消息已經(jīng)詳細(xì)說明了,剩下的就是一些具體細(xì)節(jié)的問題,比如URI的格式、各種消息報(bào)頭代表的含義、響應(yīng)狀態(tài)號(hào)對(duì)應(yīng)的含義等。因?yàn)闀r(shí)間有限,不做整理,所以只是一些閱讀協(xié)議的雜記。URI(Uniform Resource Identifiers),又名:UDI(Universal Document Identifiers),是URL(Uniform Resource Locators)和URN(Unifrom Resource Names)的組合。從HTTP協(xié)議的角度,URL只是一個(gè)由字符串組成的用于名稱、位置等的標(biāo)識(shí)符。在HTTP協(xié)議中使用URL作為定位符,它的格式為:http://${host}[:${port}][${abs_path}[?${query}]]
Date/Time格式:因?yàn)闅v史原因,HTTP支持三種日期、時(shí)間格式:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsolted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
其中第一種格式是推薦的網(wǎng)絡(luò)格式,而且它是固定長度的。HTTP1.1客戶端和服務(wù)器端需要能接收所有以上三種日期格式,但是只生成第一種日期格式。所有HTTP日期、時(shí)間都必須是格林威治時(shí)間(GMT,Greenwich Mean Time),在HTTP中,GMT和UTC(Coordinated Universal Time)時(shí)間相同。
編碼集:同MINE格式規(guī)范定義。在Cotent-Type頭中定義。
內(nèi)容編碼:主要用于對(duì)消息實(shí)體是否壓縮、采用什么壓縮算法的表示。在HTTP1.1中使用Accept-Encoding和Content-Encoding頭中定義,支持的值有:gzip、compress(廢棄)、deflate(zlib格式)、identity(默認(rèn)不壓縮,只能用于Accept-Encoding中,不能用于Content-Encoding)。這些支持的格式在IANA(Internet Assigned Numbers Authority)中注冊(cè)。
傳輸編碼(transfer-coding):用表示可以、需要應(yīng)用到實(shí)體主體以確保通過網(wǎng)絡(luò)“安全傳輸”的編碼轉(zhuǎn)換。這與內(nèi)容編碼不同,傳輸編碼是消息而非原始實(shí)體的屬性。所有傳輸編碼值大小寫無關(guān),它類似于MINE編碼中的Content-Transfer-Encoding。可用的值為:chunked,identity,gzip,compress,deflat。HTTP/1.0不支持。
媒體類型:HTTP通過Content-Type和Accept頭部域以提供可擴(kuò)展的數(shù)據(jù)類型。值格式:
${type}/${subtype};${paramName}=${paramValue};....
Product符號(hào):用于允許通信應(yīng)用程序通過軟件名稱和版本號(hào)來標(biāo)識(shí)它自己,比如:
User-Agent: CERN-LineMode/2.15 libwww/2.17b3
Server: Apache/0.84
qvalue:使用[0-1]的值來表達(dá)參數(shù)的重要性,0表示不可接受,該值的小數(shù)部分不可操作三位。
語言標(biāo)簽:用于表達(dá)消息實(shí)體的自然語言,用Accept-Language和Content-Language字段表達(dá)。它的值可以是:en、en-US、en-cockney、i-cherokee、x-pig-latin等。
實(shí)體標(biāo)簽:用于比較相同請(qǐng)求資源的兩個(gè)或多個(gè)實(shí)體的比較。如If-Match、If-None-Match、If-Range等頭部域名。
范圍標(biāo)簽:HTTP/1.1允許客戶端值請(qǐng)求響應(yīng)實(shí)體的某部分(范圍)作為響應(yīng)消息,如Range、Content-Range頭部域,他們的單位在HTTP/1.1中只支持byte。
消息報(bào)頭詳解
在請(qǐng)求消息和響應(yīng)消息中都有消息報(bào)頭,消息報(bào)頭在HTTP1.1協(xié)議中(RFC2616)有三種類型的頭:通用頭(General Header)、請(qǐng)求頭(Request Header)、響應(yīng)頭(Response Header)、實(shí)體頭(Entity Header)。其格式為:header-name: header-value。其中header-name大小寫無關(guān),以一個(gè)空行(只包含回車和換行)結(jié)束。header-value可以以任意數(shù)量的LWS開頭(一般是一個(gè)空格)。消息頭可以以至少一個(gè)SP或HT開頭的方式擴(kuò)展成多行(原文:header fields can be extended over multiple lines by preceding each extra line with at least one SP or HT,感覺理解的有問題....)。相同的header-name可以重復(fù)出現(xiàn)。通用消息頭:
Cache-Control:
Connection:
客戶端通過發(fā)送包含close值的Connection頭,表達(dá)在這次請(qǐng)求結(jié)束后,Server可以關(guān)閉這個(gè)連接,此時(shí)Server如果選擇發(fā)送響應(yīng)后關(guān)閉連接,則在響應(yīng)消息中需要包含值為close的Connection頭。
Date:
Pragma:
Trailer:
Transfer-Encoding:
Upgrade:
Via:
Warning:
請(qǐng)求消息頭:
請(qǐng)求消息頭允許客戶端傳遞一些額外關(guān)乎客戶端信息給Server,這些字段類似在方法調(diào)用中的參數(shù)。
Accept:
Accept-Charset:
Accept-Encoding:
Accept-Language:
Authorization:
Expect:
客戶端發(fā)送一個(gè)包含100-continue值的Expect字段頭,以在不發(fā)送真正消息實(shí)體的情況下測試服務(wù)器是否能接收這個(gè)消息。此時(shí)Server響應(yīng)417(Expectation Failed)或100(Continue),然后客戶端決定是否要繼續(xù)發(fā)送請(qǐng)求消息體。
From:
Host:
If-Match:
If-Modified-Since:
If-None-Match:
If-Range:
If-Unmodified-Since:
Max-Forwards:
Proxy-Authorization:
Range:
Referer:
TE:
User-Agent:
響應(yīng)消息頭
響應(yīng)消息頭允許Server傳遞一些關(guān)于響應(yīng)的額外信息給客戶端。
Accept-Ranges:
Age:
ETag:
Location:
Proxy-Authenticate:
Retry-After:
Server:
Vary:
WWW-Authenticate:
實(shí)體消息頭
實(shí)體消息頭屬于實(shí)體的一部分,是實(shí)體的元數(shù)據(jù)。
Allow:
Content-Encoding:
Content-Language:
Content-Length:
Content-Location:
Content-MD5:
Content-Range:
Content-Type:
Expires:
Last-Modified:
響應(yīng)狀態(tài)碼詳解
1xx: Informational - Request received, continuing process
- 100 - Continue
客戶端應(yīng)該繼續(xù)它的請(qǐng)求,這個(gè)暫時(shí)的響應(yīng)用于通知客戶端初始的請(qǐng)求已經(jīng)被服務(wù)器接受,并且暫時(shí)沒有被拒絕。此時(shí)客戶端會(huì)繼續(xù)發(fā)送剩余的請(qǐng)求,或者當(dāng)所有請(qǐng)求已經(jīng)發(fā)送完成時(shí)忽略該響應(yīng)碼。服務(wù)器必須在請(qǐng)求結(jié)束時(shí)發(fā)送一個(gè)最終的響應(yīng)。 - 101 - Switching Protocols
服務(wù)器理解并打算執(zhí)行客戶端的請(qǐng)求,并且使用“Upgrade”字段頭用戶表示服務(wù)器會(huì)在這個(gè)連接中的協(xié)議升級(jí)到“Upgrade”頭標(biāo)識(shí)的版本號(hào)。
2xx: Success - The action was successfully received, understood, and accepted
- 200 - OK
請(qǐng)求成功處理。 - 201 - Created
請(qǐng)求成功處理并且新的資源被創(chuàng)建。新創(chuàng)建的資源可以使用URI標(biāo)識(shí),并且該URI在響應(yīng)消息的Location頭中。服務(wù)器在返回201響應(yīng)時(shí)必須保證新的資源已經(jīng)被創(chuàng)建,如果服務(wù)器在返回響應(yīng)時(shí)還沒來得及創(chuàng)建新的資源,服務(wù)器應(yīng)該返回202(Accepted)響應(yīng)。201響應(yīng)還可以包含“ETag”響應(yīng)頭,表示實(shí)體標(biāo)簽的當(dāng)前值。 - 202 - Accepted
請(qǐng)求被接受并處理,但是處理還未完成。這個(gè)請(qǐng)求不一定被成功執(zhí)行,并且也不會(huì)在有結(jié)果后重新異步發(fā)送響應(yīng)消息。該響應(yīng)狀態(tài)主要用于一些類似batch的操作,當(dāng)客戶發(fā)送請(qǐng)求以后,不需要繼續(xù)保持和服務(wù)器的連接。返回的消息實(shí)體需要包含請(qǐng)求當(dāng)前的狀態(tài)以及一個(gè)指向狀態(tài)監(jiān)視器或客戶能得到結(jié)果的估計(jì)值。 - 203 - Non-Authoritative Information
響應(yīng)消息實(shí)體頭部返回的元信息不是在原始服務(wù)器有效的集合,而是從本地或第三方中拷貝收集。當(dāng)前的集合可能是原始集合的子集或超集,這個(gè)響應(yīng)碼不是必須的,可以使用200(OK)替代。 - 204 - No Content
服務(wù)器已經(jīng)成功的完成請(qǐng)求,該請(qǐng)求沒有消息實(shí)體,只是返回一些最新的元信息。 - 205 - Reset Content
服務(wù)器已經(jīng)成功的完成請(qǐng)求,客戶端必須重置由該請(qǐng)求引起的文檔視圖。該響應(yīng)主要用于清除用于之前輸入的表單。該響應(yīng)不可以包含消息實(shí)體。 - 206 - Partial Content
服務(wù)器已經(jīng)成功完成“Partial GET”的請(qǐng)求。該響應(yīng)的請(qǐng)求必須包含“Range”頭,以及可選的“If-Range”頭。響應(yīng)必須包含以下頭:Content-Range(或值為multipart/byteranges的Content-Type頭)、Date、ETag或Content-Location、Expires、Cache-Control、Vary等。
3xx: Redirection - Further action must be taken in order to complete the request
- 300 - Multiple Choices
當(dāng)前請(qǐng)求包含多個(gè)資源,并且在返回消息中包含每個(gè)資源的location信息。客戶端可以根據(jù)一定的算法自行選擇使用那個(gè)資源(沒有定義算法)。服務(wù)器也可以指定一個(gè)推薦的選擇(在Location頭中),客戶端可能會(huì)使用這個(gè)值重定向。 - 301 - Moved Permanently
請(qǐng)求的資源已經(jīng)被永久的移動(dòng)到一個(gè)新的URI上。客戶端可以自動(dòng)跳轉(zhuǎn)到新的URI上。新的URI需要在響應(yīng)消息的Location頭中包含。 - 302 - Found
請(qǐng)求的資源臨時(shí)的存在于另一個(gè)URI中。因?yàn)檫@個(gè)重定向還可能會(huì)改變,客戶端需要繼續(xù)使用舊的URI。臨時(shí)的URI需要包含在響應(yīng)消息的Location頭中。 - 303 - See Other
請(qǐng)求的響應(yīng)可以使用另一個(gè)URI中獲得,并且必須使用GET方法獲取另一個(gè)URI上的響應(yīng)。該響應(yīng)碼主要用于將一個(gè)POST產(chǎn)生的輸出重定向到一個(gè)新選擇的資源上。新的URI需要在Location響應(yīng)頭中給出。 - 304 - Not Modified
如果客戶端發(fā)送一個(gè)“Conditional GET”請(qǐng)求,并且該請(qǐng)求是被允許的,但是它所對(duì)應(yīng)的文檔沒有改變,則服務(wù)器返回該響應(yīng)。該響應(yīng)不能包含消息體,但必須包含一些消息頭:Date、ETag、Content-Location、Expires、Cache-Control、Vary。 - 305 - Use Proxy
請(qǐng)求的資源必須通過Proxy使用Location響應(yīng)頭中的URI訪問。
- 306 - Unused以前版本使用,現(xiàn)在已經(jīng)不使用,但是響應(yīng)碼保留。
- 307 - Temporary Redirect請(qǐng)求的資源臨時(shí)的指向另一個(gè)URI,但是由于這個(gè)重定向可能會(huì)在將來被更改,因而客戶端需要繼續(xù)使用原來的URI。臨時(shí)的URI在Location響應(yīng)頭中指定。
4xx: Client Error - The request contains bad syntax or connote be fulfilled
- 400 - Bad Request語法錯(cuò)誤,請(qǐng)求不能被服務(wù)器理解。
- 401 - Unauthorized請(qǐng)求需要包含用于認(rèn)證。響應(yīng)必須包含WWW-Authenticate頭,包含請(qǐng)求認(rèn)證需要的信息。客戶端可以使用包含Authorization頭重新發(fā)送請(qǐng)求。
- 402 - Payment Required為將來使用保留。
- 403 - Forbidden服務(wù)器拒絕該請(qǐng)求。如果服務(wù)器希望讓客戶端知道拒絕的原因,可以將原因放在響應(yīng)消息體重,如果服務(wù)器想暴露該原因,則可以返回404(Not Found)響應(yīng)。
- 404 - Not Found服務(wù)器沒有發(fā)現(xiàn)任何匹配的請(qǐng)求URI。如果服務(wù)器知道某些資源已經(jīng)永久的被移出,并且沒有重定向地址,則需要返回410(Gone)響應(yīng)。該響應(yīng)也可以用于服務(wù)器不想暴露客戶請(qǐng)求被拒絕的原因。
- 405 - Method Not Allowed請(qǐng)求方法不被對(duì)請(qǐng)求的資源允許。在響應(yīng)消息中必須包含Allow頭,指定請(qǐng)求資源允許的請(qǐng)求方法。
- 406 - Not Acceptable請(qǐng)求的資源產(chǎn)生的響應(yīng)包含了不被Accept請(qǐng)求頭指定的特性。
- 407 - Proxy Authentication Required類似401(Unauthorized),表示客戶端必須在Proxy中通過認(rèn)證。Proxy必須返回Proxy-Authenticate頭,包含請(qǐng)求認(rèn)證需要的信息。
- 408 - Request Time-out服務(wù)器已經(jīng)準(zhǔn)備好并在等待,但是客戶端在指定的時(shí)間里沒有發(fā)送請(qǐng)求。
- 409 - Conflict因?yàn)楹唾Y源當(dāng)前狀態(tài)沖突而導(dǎo)致請(qǐng)求沒有完成。該響應(yīng)碼只有在用戶知道任何解決這個(gè)沖突,并且重新提交請(qǐng)求時(shí)產(chǎn)生。
- 410 - Gone請(qǐng)求的資源已經(jīng)不在服務(wù)器上,并且沒有更進(jìn)一步的重定向地址。
- 411 - Length Required請(qǐng)求消息必須包含Content-Length消息頭。
- 412 - Precondition Failed服務(wù)器對(duì)一個(gè)或多個(gè)請(qǐng)求消息頭的測試失敗。
- 413 - Request Entity Too Large請(qǐng)求消息太大。如果這個(gè)條件是臨時(shí)的,則服務(wù)器需要包含Retry-After響應(yīng)頭,表示這個(gè)響應(yīng)時(shí)臨時(shí)的,并在指定的時(shí)間以后重試。
- 414 - Request-URI Too Large請(qǐng)求的URI太長。
- 415 - Unsupported Media Type請(qǐng)求消息格式不被支持。
- 416 - Request range not satisfiable在請(qǐng)求包含Range頭,不包含If-Range頭,并且請(qǐng)求的資源不在Range指定的范圍中。響應(yīng)頭中需要包含Content-Range表示指定資源當(dāng)前的長度。
- 417 - Expectation FailedExpect請(qǐng)求頭指定的值不能匹配服務(wù)器的邏輯。
5xx: Server Error - The server failed to fulfill an apparently valid request
- 500 - Internal Server Error服務(wù)器內(nèi)部錯(cuò)誤。
- 501 - Not Implemented服務(wù)器沒有實(shí)現(xiàn)當(dāng)前請(qǐng)求。如沒有實(shí)現(xiàn)對(duì)應(yīng)的請(qǐng)求方法。
- 502 - Bad Gateway代理或網(wǎng)關(guān)服務(wù)器從上游服務(wù)器中接收到一個(gè)不合法的響應(yīng)。
- 503 - Service Unavailable服務(wù)器因?yàn)榕R時(shí)負(fù)載過重或處于維護(hù)狀態(tài)而不能處理請(qǐng)求。該響應(yīng)暗示服務(wù)器當(dāng)前的狀態(tài)是臨時(shí)的,如果服務(wù)器知道什么時(shí)候恢復(fù)可用狀態(tài),則可以包含Retry-After響應(yīng)頭,如果沒有包含Retry-After頭,則客戶端可以把它視為500(Internal Server Error)來處理。
- 504 - Gateway Time-out代理服務(wù)器或網(wǎng)關(guān)服務(wù)器在指定的時(shí)間內(nèi)沒有收到上游服務(wù)器的響應(yīng)。
- 505 - HTTP Version not supported服務(wù)器不支持或拒絕支持請(qǐng)求消息中指定的HTTP版本。
參考:
RFC2616
RFC1867