HTTP協議報文格式

HTTP協議報文格式html

接下來咱們看看HTTP協議(Hypertext Transfer Protocol――超文本傳輸協議)瀏覽器端(客戶端)向WEB服務器端訪問頁面的過程和HTTP協議報文的格式。數據庫

基於HTTP協議的客戶機訪問包括4個過程,分別是創建TCP套接字鏈接、發送HTTP請求報文、接收HTTP應答報文和關閉TCP套接字鏈接:編程

1. 建立TCP套接字鏈接瀏覽器

客戶端與WEB服務器建立TCP套接字鏈接,其中WEB端服務器的地址能夠經過域名解析肯定,WEB端的套接字偵聽端口通常是80。服務器

2. 發送HTTP請求報文測試

客戶端向WEB服務端發送請求報文,HTTP協議的請求報文格式爲:spa

請求消息 = 請求行(實體頭信息)CRLF[實體內容]
請求行 = 方法 URL HTTP版本號 CRLF
方法 = GET|HEAD|POST|擴展方法
URL = 協議名稱 + 宿主名 + 目錄與文件名

 

 

 

 

 

其中"CRLF"表示回車換行。server

 

"請求行"中的"方法"描述了對指定資源執行的動做,經常使用的方法"GET"、"HEAD"和"POST"等3種,它們的含義如表15-8所示:htm

 

表15-8 HTTP請求方法對象

類別 描述
GET

WEB服務器中獲取對象,不一樣類型的對
象將獲取不一樣的信息,好比:

· 文件類型對象,獲取該文件的內容。

· 程序類型對象,獲取該程序執行的結果。

· 數據庫查詢類型對象,獲取該查詢的結果。

POST 從客戶端向WEB服務器發送數據。
HEAD 要求服務器查找對象的元信息。

 

 

 

 

 

 

 

 

 

"實體頭信息"中記載了報文的屬性,利用這些信息能夠實現客戶端與WEB服務器之間的請求或應答,它包括報文的數據類型、壓縮方法、語言、長度、壓縮方法、最後一次修改時間、數據有效期等信息。

 

實體內容是報文傳送的附加信息,通常供POST請求填寫。

 

GET請求報文例子

 

一個URL爲"http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱雲翔"的GET請求報文例子以下:

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.com
Connection: Keep-Alive

 

 

 

 

 

 

 

其中"/toupiaoceshi.asp?name=朱雲翔"是URL信息,語句"ACCEPT:*/*"及其後的語句是"實體頭信息"。

 

注意:在語句"Connection:Keep-Alive"下的空行是必須的。

 

POST請求報文例子

 

下面是HTTP協議中關於POST請求報文例子,節自《中國聯合通訊公司短消息網關係統接口協議(SGIP)》V1.2版:

 

通常狀況下,採用POST報文傳送信息的數據存儲在"實體"部分中。

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>

 

 

 

 

 

 

 

 

3. 接收HTTP應答報文

 

WEB服務器處理客戶請求,並向客戶機發送應答報文,HTTP協議的應答報文格式爲:

 

應答報文 = 狀態行(實體頭信息)CRLF [實體內容]

 

狀態行   = HTTP版本號 狀態碼 緣由敘述

 

狀態碼描述了WEB服務器執行客戶機請求的狀態信息,其取值含義如表15-8所示:

 

表15-8 HTTP應答響應碼含義

取值 描述
1XX 保留。
2XX 成功接收,好比「200」表示處理成功。
3XX 客戶需進一步細化請求。
4XX 客戶錯誤,好比「404」表示訪問的
指定資源不存在。
5XX 服務器錯誤。

 

 

 

 

 

 

 

GET應答報文例子

 

一個請求URL爲"http://www.zhiliaowang.com/toupiaoceshi.asp?name=朱雲翔"的應答報文例子以下:

HTTP/1.1 200 OK
Connection: keep-alive
Date: Thu, 26 Jul 2007 14:00:02 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Content-Length: 190
Content-Type: text/html
Set-Cookie: ASPSESSIONIDSAATTCSQ=JOPPKDCAMHHBEOICJPGPBJOB; path=/
Cache-control: private
<html>
<head>
<title>精通Unix下C語言編程</title>
</head>
<body>
<b>精通Unix下C語言編程與項目實戰<br></b>
<b>投票測試<br></b>
感謝你爲選手
朱雲翔
投票!
</body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

語句"HTTP/1.1 200 OK"中,"200"是響應碼,"OK"是緣由描述。

 

POST應答報文例子

 

下面是HTTP協議中關於POST應答報文例子,節自《中國聯合通訊公司短消息網關係統接口協議(SGIP)》V1.2版:

HTTP/1.0 200 OK       /* 狀態行,應答成功 */
Date: Tue, 13 Mar 2001 02:45:12 GMT /* 如下爲實體頭信息 */
Server: Apache/1.3.12 (Unix)
Content-Type: text/html
Connection: close

 

<CommandId>=<80000004>     /* 如下爲POST應答的實體信息 */
<SequenceNumber>=<205502327125025327>
<UserNumber>=<8613001125453>
<SPNumber>=<168>
<MessageContent>=< EFGH 5678> <Result>=<0>

 

 

 

 

 

 

 

 

 

通常狀況下,POST應答報文的"實體"部分存儲實際傳輸的信息。

 

4. 關閉TCP套接字鏈接

 

客戶機與服務器雙方關閉套接字鏈接,結束TCP/IP對話。

相關文章
相關標籤/搜索