一、請求
HTTP請求示例:
請求行(request line)
POST /search HTTP/1.1
(以下都是請求頭部(header))Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint,
application/msword, application/x-silverlight, application/x-shockwave-flash, */*? Referer:http://www.google.cn/">http://www.google.cn/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; TheWorld)
Host:http://www.google.cn">www.google.cnConnection: Keep-Alive? Cookie: PREF=ID=80a06da87be9ae3c:U=f7167333e2c3b714:NW=1:TM=1261551909:LM=1261551917:S=ybYcq2wpfefs4V9g;
NID=31=ojj8d-IygaEtSxLgaJmqSjVhCspkviJrB6omjamNrSm8lZhKy_yMfO2M4QMRKcH1g0iQv9u-2hfBW7bUFwVh7pGaRUb0RnHcJU37y-
FxlRugatx63JLv7CWMD6UB_O_r(空行(blank line))hl=zh-CN&source=hp&q=domety(請求數(shù)據(jù)(request-body))
一個HTTP請求報文由請求行(request line)、請求頭部(header)、空行(blank line)和請求數(shù)據(jù)(request-body)4個部分組成赚哗。
1.請求行壹若。
請求行由 請求方法字段、URL字段和HTTP協(xié)議版本字段扭勉,3個字段組成鹊奖,它們用空格分隔。例如涂炎,GET /index.html HTTP/1.1忠聚。
1).?HTTP協(xié)議的請求方法字段有GET、POST唱捣、HEAD两蟀、PUT、DELETE震缭、OPTIONS赂毯、TRACE、CONNECT。
常見有:
Get:GET方法要求服務(wù)器將URL定位的資源放在響應(yīng)報文的數(shù)據(jù)部分党涕,回送給客戶端活烙。使用GET方法時,請求參數(shù)和對應(yīng)的值附加在URL后面遣鼓,利用一個問號(“?”)代表URL的結(jié)尾與請求參數(shù)的開始啸盏,傳遞參數(shù)長度受限制。
Post:POST方法將請求參數(shù)封裝在HTTP請求數(shù)據(jù)中骑祟,以名稱/值的形式出現(xiàn)回懦,可以傳輸大量數(shù)據(jù),這樣POST方式對傳送的數(shù)據(jù)大小沒有限制次企,而且也不會顯示在URL中怯晕。
HEAD:HEAD就像GET,只不過服務(wù)端接受到HEAD請求后只返回響應(yīng)頭缸棵,而不會發(fā)送響應(yīng)內(nèi)容舟茶。當(dāng)我們只需要查看某個頁面的狀態(tài)的時候,使用HEAD是非常高效的堵第,因為在傳輸?shù)倪^程中省去了頁面內(nèi)容吧凉。
2.請求頭
請求頭部由關(guān)鍵字/值對組成,每行一對踏志,關(guān)鍵字和值用英文冒號“:”分隔阀捅。請求頭部通知服務(wù)器有關(guān)于客戶端請求的信息,典型的請求頭有:
User-Agent:產(chǎn)生請求的瀏覽器類型针余。
Accept:客戶端可識別的內(nèi)容類型列表饲鄙。
Host:請求的主機(jī)名,允許多個域名同處一個IP地址圆雁,即虛擬主機(jī)忍级。
3.空行
最后一個請求頭之后是一個空行,發(fā)送回車符和換行符伪朽,通知服務(wù)器以下不再有請求頭轴咱。
4.請求數(shù)據(jù)
請求數(shù)據(jù)不在GET方法中使用,而是在POST方法中使用驱负。POST方法適用于需要客戶填寫表單的場合嗦玖。與請求數(shù)據(jù)相關(guān)的最常使用的請求頭是Content-Type和Content-Length。
二跃脊、響應(yīng)
HTTP響應(yīng)示例:
HTTP/1.1 200 OK(狀態(tài)行)Date: Sat, 31 Dec 2005 23:59:59 GMT(以下消息報頭)Content-Type: text/html;charset=ISO-8859-1Content-Length: 122<html>(響應(yīng)正文)<head><title>W(wǎng)rox Homepage</title></head><body><!-- body goes here --></body></html>
HTTP響應(yīng)也由三個部分組成宇挫,分別是:狀態(tài)行、消息報頭酪术、響應(yīng)正文器瘪。
正如你所見翠储,在響應(yīng)中唯一真正的區(qū)別在于第一行中用狀態(tài)信息代替了請求信息。狀態(tài)行(status line)通過提供一個狀態(tài)碼來說明所請求的資源情況橡疼。
狀態(tài)行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中援所,HTTP-Version表示服務(wù)器HTTP協(xié)議的版本;Status-Code表示服務(wù)器發(fā)回的響應(yīng)狀態(tài)代碼欣除;Reason-Phrase表示狀態(tài)代碼的文本描述住拭。狀態(tài)代碼由三位數(shù)字組成,第一個數(shù)字定義了響應(yīng)的類別历帚,且有五種可能取值滔岳。
1xx:指示信息--表示請求已接收,繼續(xù)處理挽牢。
2xx:成功--表示請求已被成功接收谱煤、理解、接受禽拔。
3xx:重定向--要完成請求必須進(jìn)行更進(jìn)一步的操作刘离。
4xx:客戶端錯誤--請求有語法錯誤或請求無法實現(xiàn)。
5xx:服務(wù)器端錯誤--服務(wù)器未能實現(xiàn)合法的請求睹栖。
常見狀態(tài)代碼硫惕、狀態(tài)描述的說明如下。
200 OK:客戶端請求成功磨淌。
400 Bad Request:客戶端請求有語法錯誤疲憋,不能被服務(wù)器所理解凿渊。
401 Unauthorized:請求未經(jīng)授權(quán)梁只,這個狀態(tài)代碼必須和WWW-Authenticate報頭域一起使用。
403 Forbidden:服務(wù)器收到請求埃脏,但是拒絕提供服務(wù)搪锣。
404 Not Found:請求資源不存在,舉個例子:輸入了錯誤的URL彩掐。
500 Internal Server Error:服務(wù)器發(fā)生不可預(yù)期的錯誤构舟。
503 Server Unavailable:服務(wù)器當(dāng)前不能處理客戶端的請求,一段時間后可能恢復(fù)正常堵幽,舉個例子:HTTP/1.1 200 OK(CRLF)狗超。