HTTP就像是因特網的信使,而報文就是信使用來傳遞東西的包裹。HTTP報文時在HTTP的應用程序之間發送的數據快,這些數據塊是以文本形式的元信息開頭。html
每條報文都包含一條來自於客戶端的請求,或者是來自於服務器的響應,她們有三個部分組成:對報文進行描述的起始行(start line)、包含屬性的首部(header)、以及可選的,包含數據的主題(body)安全
(圖片來自HTTP權威指南)服務器
下面是咱們打開百度網頁時候的請求報文:app
請求: GET / HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Referer : http://www.baidu.com/s? wd=www.baidu.com&rsv_bp=1&tn=baidu&ie=utf-8&inputT=3564&f=8&bs=www.baidu.com&rsv_sug4=537&rsv_sug1=2
Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3
User-Agent : Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)
Accept-Encoding: gzip, deflate
Host : www.baidu.com
DNT : 1
Connection: Keep-Alive
Cookie: BD_UPN=11253144; BD_CK_SAM=1; BAIDUID=B7687C3B057C631C785FD8E4115F2AA5:FG=1; H_PS_PSSID=6623_1422_7570_7800_6996_7828_7729_7781_6506_6017_7825_7674_7892_7607_7799_7632_7836_7687_7803_7475dom
響應報文:
響應 : HTTP/1.1 200 OKide
Date: Sat, 26 Jul 2014 06:33:00 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: Keep-Alive
Cache-Control: private
Cxy_all : baidu+f1c540f07047b27eba5362fd7cf3a8e4
Expires : Sat, 26 Jul 2014 06:32:15 GMT
X-Powered-By: HPHP
Server : BWS/1.1
BDPAGETYPE : 1
BDQID: 0xd7bc10d90008f47a
BDUSERID : 0
Set-Cookie: BDSVRTM=0; path=/url
用Python 抓取的信息:spa
---------------------header--------- Date: Sat, 26 Jul 2014 06:09:17 GMT Content-Type: text/html; charset=utf-8 Transfer-Encoding: chunked Connection: Close Vary: Accept-Encoding Set-Cookie: BAIDUID=6D419D997AAD0E547B96E6FC84718F41:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com Set-Cookie: BDSVRTM=0; path=/ P3P: CP=" OTI DSP COR IVA OUR IND COM " Cache-Control: private Cxy_all: baidu+9b70894ee1674161ea842a5717aff56d Expires: Sat, 26 Jul 2014 06:08:36 GMT X-Powered-By: HPHP Server: BWS/1.1 BDPAGETYPE: 1 BDQID: 0xfcb39f4700088171 BDUSERID: 0
Content-Type用於說明 主體是什麼,例子中爲HTML,xml
---------起始行htm
一、請求行
請求報文請求服務器對資源進行一些操做,請求報文的起始行成爲請求行。他包含了一個方法和一個請求的url.
二、響應行
響應報文的起始行稱爲響應行,它包含一個請求報文使用的HTTP版本,數字狀態碼等。
--------首部
首部就是跟在起始行後面的鍵值對。咱們能夠在上面請求百度的例子中看到。
安全方法:
HTTP定義了一組被稱爲安全方法的方法,GET方法和HEAD方法都被認爲是安全的,這意味着使用GET或HEAD方法的HTTP請求都不會產生什麼動做,也就是HTTP請求不會在服務器上產生什麼結果。須要理解的是,安全方法並非什麼動做都不執行(實際上,這是有Web開發者決定的),使用安全方法的目的就是容許HTTP應用程序開發者通知用戶,何時會使用某個可能引起某些動做的不安全的方法)