python爬虫(二)_HTTP的请求和响应 (3)

如果有多个Encoding同时匹配,按照q值顺序排列,本例中按顺序支持gzip,identity压缩编码,支持gzip的浏览器会返回经过gzip编码的HTML页面。如果请求消息中没有设置这个域服务器假定客户端对各种内容编码都可以接收。

8. Accept-Language(语言种类)
Accept-Language:指出浏览器可以接受的语言种类,如en或en-us指英语,zh或者zh-cn指中文,当服务器能够提供一种以上的语言版本时要用到。

9. Accept-Charset(字符编码)
Accept-Charset:指出浏览器可以接收的字符编码

举例:Accept-Charset:sio-8859-1,gb2312,utf-8**

ISO8859-1:通常叫做Latin-1。Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符,英文浏览器的默认值是ISO-8859-1。

gb2312:标准简体中文字符集;

UTF-8:UNICODE的一种边长字符编码,可以解决多种语言文本显示问题,从而实现应用国际化和本地化。
如果在请求消息中没有设置这个域,缺省是任何字符集都可以接受。

10.Cookie(Cookie)
Cookie:浏览器用这个属性向服务器发送Cookie。Cookie实在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能,以后会详细讲。

11. Content-Type(POST数据类型)
Content-Type:POST请求里用来表示的内容类型。

举例:Content-Type=Text/XML;charset=gb2312;

指明该请求的消息体中包含的是纯文本的XML类型的数据,字符编码采用"gb2312"

服务端HTTP响应

HTTP响应也由四个部分,分别是:状态行、消息报头、空行、响应正文

response响应

HTTP/1.1 200 OK Server: Tengine Connection: keep-alive Date: Wed, 30 Nov 2016 07:58:21 GMT Cache-Control: no-cache Content-Type: text/html;charset=UTF-8 Keep-Alive: timeout=20 Vary: Accept-Encoding Pragma: no-cache X-NWS-LOG-UUID: bd27210a-24e5-4740-8f6c-25dbafa9c395 Content-Length: 180945 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" .... 常用的响应报头(了解)

1.Cache-Control:must-revalidate, no-cache, private。
这个值告诉客户端,服务端不希望客户端缓存资源,在下次请求资源时,必须要重新请求服务器,不能从缓存副本中获取资源。

Cache-Control是响应头中很重要的信息,当客户端请求头中包含Cache-Control:max-age=0请求,明确表示不会缓存服务器资源时,Cache-Control作为回应响应,通常会返回no-cache,意思是说,“那就不缓存呗”。

当客户端在请求头中没有包含Cache-Control时,服务端往往会根据不同的资源确定不同的缓存忽略,比如说oschina在缓存图片资源的策略就是Cache-Control:max-age=86400,这个意思是,从当前时间开始,在86400秒的时间内,客户端可以直接从缓存副本中读取资源,而不需要向服务器请求。

2.Connection:keep-alive
这个字段作为回应客户端的Connection:keep-alive,告诉客户端服务器的tcp连接也是一个长连接,客户端可以继续使用这个tcp连接发送http请求。

3.Content-Encoding:gzip
告诉客户端,服务器发送的资源是采用gzip编码的,客户端看到这个信息后,应该采用gzip对资源进行解码。

4.Content-Type:text/html;charset=UTF-8
告诉客户端,资源文件的类型,还有字符编码,客户端通过utf-8对资源进行解码,然后对资源进行html解析。通常我们会看到有些网站是乱码的,往往就是服务器端没有返回正确的编码。

5.Date: Sun, 21 Sep 2016 06:18:21 GMT
这个就是服务端发送资源的服务器时间,GMT是格林尼治所在地的标准时间。http协议中发送的时间都是GMT,这主要是解决在互联网上,不同时区在相互请求资源的时候,时间混乱问题。

6.Expires:Sun, 1 Jan 2000 01:00:00 GMT
这个响应头也是缓存有关的,告诉客户端在这个时间前,可以直接访问缓存副本,很显然这个值会存在问题,因为客户端和服务器的时间不一定会相应,如果时间不同就会导致问题。所以这个响应头是没有Cache-Control:max-age=*这个响应头准确的,因为max-age=date中的date是相应时间,不仅更好理解,也更准确。

7.Pragma:no-cache
这个含义与Cache-Control等同。

8.Server:Tengine/1.4.6
这个是服务器和相应版本,只是告诉客户端服务器的信息。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwfjf.html