HTTP报文

HTTP就像是因特网的信使,而报文就是信使用来传递东西的包裹。HTTP报文时在HTTP的应用程序之间发送的数据快,这些数据块是以文本形式的元信息开头。

每条报文都包含一条来自于客户端的请求,或者是来自于服务器的响应,她们有三个部分组成:对报文进行描述的起始行(start line)、包含属性的首部(header)、以及可选的,包含数据的主题(body)

(图片来自HTTP权威指南)

下面是我们打开百度网页时候的请求报文:


请求:            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_7475

响应报文:
响应 :          HTTP/1.1 200 OK


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=/

用Python 抓取的信息:

---------------------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,

---------起始行

1、请求行

请求报文请求服务器对资源进行一些操作,请求报文的起始行成为请求行。他包含了一个方法和一个请求的url.

2、响应行

响应报文的起始行称为响应行,它包含一个请求报文使用的HTTP版本,数字状态码等。

--------首部

首部就是跟在起始行后面的键值对。我们可以在上面请求百度的例子中看到。

安全方法:

HTTP定义了一组被称为安全方法的方法,GET方法和HEAD方法都被认为是安全的,这意味着使用GET或HEAD方法的HTTP请求都不会产生什么动作,也就是HTTP请求不会在服务器上产生什么结果。需要理解的是,安全方法并不是什么动作都不执行(实际上,这是有Web开发者决定的),使用安全方法的目的就是允许HTTP应用程序开发者通知用户,什么时候会使用某个可能引发某些动作的不安全的方法)

原文地址:https://www.cnblogs.com/CBDoctor/p/3870160.html