Python - HTTP 标头
客户端和服务器之间的请求和响应涉及消息中的标头和正文。 标头包含出现在通过 TCP 连接发送的原始消息开头的协议特定信息。 消息正文与标题使用空行分隔。
标头示例
http 响应中的标头可以分为以下类型。 以下是标头的说明和示例。
Cache-Control
Cache-Control general-header 字段用于指定所有缓存系统必须遵守的指令。 语法如下:
Cache-Control : cache-request-directive|cache-response-directive
HTTP 客户端或服务器可以使用Cache-control 通用标头来指定缓存参数或从缓存中请求某些类型的文档。 缓存指令在逗号分隔的列表中指定。 例如:
Cache-control: no-cache
Connection
Connection general-header 字段允许发送者指定特定连接所需的选项,并且不能由代理通过进一步的连接进行通信。 以下是使用连接标头的简单语法:
Connection : "Connection"
HTTP/1.1 为发送者定义了"close"连接选项,以表示连接将在响应完成后关闭。 例如:
Connection: close
默认情况下,HTTP 1.1 使用持久连接,连接不会在事务处理后自动关闭。 另一方面,HTTP 1.0 默认没有持久连接。 如果 1.0 客户端希望使用持久连接,它使用 keep-alive 参数,如下所示:
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 general-header 字段指示已将哪种类型的转换应用于消息正文,以便在发件人和收件人之间安全地传输它。 这与内容编码不同,因为传输编码是消息的属性,而不是实体主体的属性。 Transfer-Encoding 标头语法如下:
Transfer-Encoding: chunked
所有传输编码值都不区分大小写。
Upgrade
Upgrade general-header 允许客户端指定它支持的附加通信协议,以及如果服务器认为适合切换协议时想要使用的附加通信协议。 例如:
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Upgrade 标头字段旨在提供一种简单的机制,用于从 HTTP/1.1 转换到其他一些不兼容的协议。
Via
Via general-header 必须由网关和代理使用来指示中间协议和接收者。 例如,请求消息可以从 HTTP/1.0 用户代理发送到代号为"fred"的内部代理,它使用 HTTP/1.1 将请求转发到 nowhere.com 的公共代理,后者通过将请求转发到 nowhere.com 的原始服务器来完成请求。 然后 nowhere.com 收到的请求将具有以下 Via 标头字段:
Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Upgrade 标头字段旨在提供一种简单的机制,用于从 HTTP/1.1 转换到其他一些不兼容的协议。
Warning
Warning general-header 用于携带有关消息状态或转换的附加信息,这些信息可能不会反映在消息中。 一个响应可能携带多个 Warning 标头。
Warning : warn-code SP warn-agent SP warn-text SP warn-date
示例
在下面的示例中,我们使用 urllib2 模块通过 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