15.5.2 HTTP協(xié)議報文格式(1)
接下來我們看看HTTP協(xié)議(Hypertext Transfer Protocol――超文本傳輸協(xié)議)瀏覽器端(客戶端)向WEB服務器端訪問頁面的過程和HTTP協(xié)議報文的格式。
基于HTTP協(xié)議的客戶機訪問包括4個過程,分別是建立TCP套接字連接、發(fā)送HTTP請求報文、接收HTTP應答報文和關閉TCP套接字連接:
1. 創(chuàng)建TCP套接字連接
客戶端與WEB服務器創(chuàng)建TCP套接字連接,其中WEB端服務器的地址可以通過域名解析確定,WEB端的套接字偵聽端口一般是80。
2. 發(fā)送HTTP請求報文
客戶端向WEB服務端發(fā)送請求報文,HTTP協(xié)議的請求報文格式為:
請求消息 = 請求行(實體頭信息)CRLF[實體內(nèi)容]
請求行 = 方法 URL HTTP版本號 CRLF
方法 = GET|HEAD|POST|擴展方法
URL = 協(xié)議名稱 + 宿主名 + 目錄與文件名
其中"CRLF"表示回車換行。
"請求行"中的"方法"描述了對指定資源執(zhí)行的動作,常用的方法"GET"、"HEAD"和"POST"等3種,它們的含義如表15-8所示:
表15-8 HTTP請求方法
取值
描述
GET
從WEB服務器中獲取對象,不同類型的對
象將獲取不同的信息,比如:
· 文件類型對象,獲取該文件的內(nèi)容。
· 程序類型對象,獲取該程序執(zhí)行的結果。
· 數(shù)據(jù)庫查詢類型對象,獲取該查詢的結果。
HEAD
要求服務器查找對象的元信息。
POST
從客戶端向WEB服務器發(fā)送數(shù)據(jù)。
"實體頭信息"中記載了報文的屬性,利用這些信息可以實現(xiàn)客戶端與WEB服務器之間的請求或應答,它包括報文的數(shù)據(jù)類型、壓縮方法、語言、長度、壓縮方法、最后一次修改時間、數(shù)據(jù)有效期等信息。
實體內(nèi)容是報文傳送的附加信息,一般供POST請求填寫。
GET請求報文例子
一個URL為"
GET
http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱云翔 HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;
Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Host:
www.zhiliaowang.comConnection: Keep-Alive
其中"/toupiaoceshi.asp?name=朱云翔"是URL信息,語句"ACCEPT:*/*"及其后的語句是"實體頭信息"。
注意:在語句"Connection:Keep-Alive"下的空行是必須的。
POST請求報文例子
下面是HTTP協(xié)議中關于POST請求報文例子,節(jié)自《中國聯(lián)合通信公司短消息網(wǎng)關系統(tǒng)接口協(xié)議(SGIP)》V1.2版:
POST /sp.cgi HTTP/1.0 /* 請求行,服務程序為sp.cgi */
Host:
www.spserver.com /* 以下為實體頭信息 */
Authorization: Basic <Base64 串>
Content-Length: <Content-Length><CommandId>=<4> /* 以下為POST請求的實體信息 */
<SequenceNumber>=<205502327125025327> /* 實體部分輸送報文 */
<UserNumber>=<8613001125453>
<SPNumber>=<168>
<MessageContent>=<ABCD 1234>
一般情況下,采用POST報文傳送信息的數(shù)據(jù)存儲在"實體"部分中。
15.5.2 HTTP協(xié)議報文格式(2)
3. 接收HTTP應答報文
WEB服務器處理客戶請求,并向客戶機發(fā)送應答報文,HTTP協(xié)議的應答報文格式為:
應答報文 = 狀態(tài)行(實體頭信息)CRLF [實體內(nèi)容]
狀態(tài)行 = HTTP版本號 狀態(tài)碼 原因敘述
狀態(tài)碼描述了WEB服務器執(zhí)行客戶機請求的狀態(tài)信息,其取值含義如表15-8所示:
表15-8 HTTP應答響應碼含義
取值
描述
1××
保留。
2××
成功接收,比如“200”表示處理成功。
3××
客戶需進一步細化請求。
4××
客戶錯誤,比如“404”表示訪問的
指定資源不存在。
5××
服務器錯誤。
GET應答報文例子
一個請求URL為"
下面是HTTP協(xié)議中關于POST應答報文例子,節(jié)自《中國聯(lián)合通信公司短消息網(wǎng)關系統(tǒng)接口協(xié)議(SGIP)》V1.2版: