Python HTTP标头
客户端和服务器之间的请求和响应涉及消息中的标头和正文。标头包含特定于协议的信息,这些信息出现在通过TCP连接发送的原始消息的开头。消息的正文与标头使用空白行分隔。
标头字段
http响应中的标头可以分为以下类型。以下是标头的说明和示例。
Cache-ControlCache-Control general-header字段用于指定所有缓存系统必须遵守的指令。语法如下:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 Cache-Control : cache-request-directive|cache-response-directive
HTTP客户端或服务器可以使用“Cache-Control”常规标头来指定缓存参数或从缓存中请求某些类型的文档。缓存指令在逗号分隔的列表中指定。例如:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 Cache-control: no-cache
Connection连接通用标头字段允许发送者指定该特定连接所需的选项,并且代理不能通过其他连接传达这些选项。以下是使用连接头的简单语法:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 Connection : "Connection"
HTTP/1.1为发送方定义了“off”连接选项,以指示响应完成后将关闭连接。例如:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 Connection: close
默认情况下,HTTP 1.1使用持久连接,该连接在事务处理后不会自动关闭。另一方面,HTTP 1.0默认情况下不具有持久连接。如果1.0客户端希望使用持久连接,则它使用keep-alive参数,如下所示:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 Connection: keep-alive
Date所有HTTP日期/时间戳都以格林威治标准时间(GMT)表示。允许HTTP应用程序使用日期/时间戳的以下三种表示形式中的任何一种:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 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字段指示已将哪种类型的转换应用于消息正文,以便在发送者和接收者之间安全地进行转换。这与内容编码不同,因为传输编码是消息的属性,而不是实体主体的属性。Transfer-Encoding标头字段的语法如下:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 Transfer-Encoding: chunked
所有传输编码值都不区分大小写。
UpgradeUpgrade通用标头允许客户端指定其支持的其他通信协议,并在服务器认为适合切换协议时使用。例如:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Upgrade标头字段旨在提供一种从HTTP/1.1过渡到其他不兼容协议的简单机制。
Via
网关和代理必须使用Via通用标题来指示中间协议和接收者。例如,可以将请求消息从HTTP/1.0用户代理发送到名为“fred”的内部代理,该代理使用HTTP/1.1将请求转发到位于nowhere.com的公共代理,代理通过以下方式完成请求:将其转发到位于 www.ics.uci.edu 的原始服务器。www.ics.uci.edu 接收到的请求将具有以下Via标头字段:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning
Warning通用标头用于携带有关消息状态或转换的其他信息,这些信息可能未反映在消息中。一个响应可能包含多个警告标头。
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 Warning : warn-code SP warn-agent SP warn-text SP warn-date
标头示例
在下面的示例中,使用urllib2模块使用urlopen获得响应。接下来应用info()方法来获取该响应的标头信息。
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 import urllib2 response = urllib2.urlopen('https://www.yapf.com/python/python-index.html') html = response.info() print html
当我们运行上面的程序时,得到以下输出:
# Filename : example.py # Copyright : 2020 By Codebaoku # Author by : www.yapf.com # Date : 2020-08-25 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/ signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 Cache-Control: max-age=0 Connection: keep-alive Cookie: OUTFOX_SEARCH_USER_ID_NCOO=1091135338.9776888; JSESSIONID=E15B8EC70E5BBF1AEDF4B4EAA2CDB5E8; Hm_lvt_b7b3187b2696243340bf6da4428bc560=1598152290,1598152290,1598152812,1598274529; Hm_lpvt_b7b3187b2696243340bf6da4428bc560=1598326307 Host: www.yapf.com If-Modified-Since: Mon, 24 Aug 2020 12:50:33 GMT If-None-Match: W/"5f43b799-b8ee" Sec-Fetch-Dest: document Sec-Fetch-Mode: navigate Sec-Fetch-Site: none Sec-Fetch-User: ?1 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36
- Python读写csv文件的操作方法
- Python的gtts库将文字转为音频应该如何操作
- Python异步之怎么保护任务免于取消
- Python异步之上下文管理器怎么使用
- Python中Matplotlib图像如何添加标签
- Python如何利用手势识别实现贪吃蛇游戏
- 如何封装Python时间处理库创建自己的TimeUtil类
- Python IP地址
- Python DNS查找
- Python HTTP请求
- Python HTTP响应
- Python HTTP标头
- Python 自定义HTTP请求
- Python HTTP验证
- Python SMTP
- Python 并发与并行
- Python 同步线程
- Python 测试线程应用程序
- Python 进程池
- Python 事件驱动编程