Python Network Programming 简明教程
Python - HTTP Headers
客户端和服务器之间的请求和响应在消息中包含头和主体。头包含特定于协议的信息,显示在通过 TCP 连接发送的原始消息的开头。消息的正文使用空白行从头中分离出来。
Example of Headers
http 响应中的头可以分为以下类型。以下是对头和示例的描述。
Cache-Control
Cache-Control通用头字段用于指定所有缓存系统都必须遵守的指令。以下是语法:
Cache-Control : cache-request-directive|cache-response-directive
HTTP客户端或服务器可以使用`@ {s0}`通用标头为缓存指定参数,或从缓存中请求某些类型的文档。缓存指令已逗号分隔列表中指定。例如:
Cache-control: no-cache
Connection
Connection通用头字段允许发送方指定该特定连接所需选项,并且不能通过代理在进一步连接中传达这些选项。以下是使用连接标头的简单语法:
Connection : "Connection"
HTTP/1.1为发送方定义了“close”连接选项,以表示在完成响应后将关闭该连接。例如:
Connection: close
默认情况下,HTTP 1.1使用持久连接,其中连接不会在事务后自动关闭。另一方面,HTTP 1.0默认情况下没有持久连接。如果1.0客户端希望使用持久连接,它将使用`@ {s1}`参数,如下所示:
Connection: keep-alive
Date
所有HTTP日期/时间戳都必须以格林尼治标准时间(GMT)表示,无一例外。HTTP应用程序可以使用以下三种日期/时间戳表示形式中的任何一种:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123
Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
Transfer-Encoding
Transfer-Encoding 通用头字段指示为了在发送方和接收方之间安全地传输消息正文而对消息正文应用了哪种类型的转换。这与 content-encoding 不同,因为传输编码是消息的属性,而不是实体正文的属性。Transfer-Encoding 头字段的语法如下:
Transfer-Encoding: chunked
所有传输编码值不区分大小写。
Upgrade
Upgrade 通用标题允许客户端指定其支持的其他通信协议,如果服务器发现切换协议合适,则客户端希望使用这些协议。例如:
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Upgrade 头字段旨在为从 HTTP/1.1 过渡到其他不兼容协议提供一种简单的机制。
Example
在以下示例中,我们使用 urllib2 模块来 get 一个使用 urlopen 的响应。接下来,我们应用 info() 方法来获得该响应的头信息。
import urllib2
response = urllib2.urlopen('http://www.tutorialspoint.com/python')
html = response.info()
print html
当我们运行以上程序时,我们得到以下输出:
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Origin: *
Cache-Control: max-age=2592000
Content-Type: text/html; charset=UTF-8
Date: Mon, 02 Jul 2018 11:06:07 GMT
Expires: Wed, 01 Aug 2018 11:06:07 GMT
Last-Modified: Sun, 01 Jul 2018 21:05:38 GMT
Server: ECS (tir/CDD1)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 22063
Connection: close