查看HTTP 各方法的消息请求头和响应头——get/head/post/put

今天介绍一下如何获取HTTP消息的请求头和响应头,请求头,顾名思义,就是包含在客户端发送给服务器的HTTP请求消息的头部,响应头包含在服务器响应客户端的请求消息的返回消息的头部。请求头中有客户端期望服务端该如何响应请求消息的信息,响应头中有服务端响应的方式,以下是通过HTTP请求百度服务的例子。

1、请求头

# -*- coding: utf-8 -*-
import requests                      #添加requests库

url = 'https://www.baidu.com'        #将百度网址作为资源URL
r1 = requests.get(url)               #向百度服务器发送get请求
r2 = requests.head(url)              #向百度服务器发送head请求
r3 = requests.post(url)              #向百度服务器发送post请求
r4 = requests.put(url)               #向百度服务器发送put请求

print(r1.request.headers)            #打印出get请求的请求头
print(r2.request.headers)            #打印出head请求的请求头
print(r3.request.headers)            #打印出post请求的请求头
print(r4.request.headers)            #打印出put请求的请求头

各请求的请求头信息如下,信息以"键-值对"的形式展示。

上面请求头各项解释如下,还有很多其他请求头的选项,这里不一一解释了。

请求头描述参数内容
User-Agent告诉服务器,请求者的相关信息(版本号等信息)'ser-Agent' : 'Mozilla/5.0 (Linux; X11)'
Accept-Encoding告诉服务器,客户端支持的数据压缩格式'Accept-Encoding' : 'compress, gzip'
Accept告诉服务器,客户端支持的数据类型'Accept' : 'text/plain, text/html'
Connection告诉服务器,处理完这次请求,是断开连接还是保持连接'Connection' : 'close'或者'keep-alive'
Content-Length告诉服务器,本次请求多长的数据'Content-Length' : '348'

2、响应头

import requests

url = 'https://www.baidu.com'
r1 = requests.get(url)
r2 = requests.head(url)
r3 = requests.post(url)
r4 = requests.put(url)

print(r1.headers)                #打印出服务器响应get请求的响应头
print(r2.headers)                #打印出服务器响应head请求的响应头
print(r3.headers)                #打印出服务器响应post请求的响应头
print(r4.headers)                #打印出服务器响应put请求的响应头

这样打印出来的内容太长,图片无法全部显示出来。

所以我们用dict()函数将响应头内容转化成字典格式,使用print()的升级版pprint()打印成竖行模式,比较美观,此时就需要import pprint库。

import requests
import pprint

url = 'https://www.baidu.com'
r1 = requests.get(url)
r2 = requests.head(url)
r3 = requests.post(url)
r4 = requests.put(url)

pp = pprint.PrettyPrinter(indent=2)
pp.pprint(dict(r1.headers))
pp.pprint(dict(r2.headers))
pp.pprint(dict(r3.headers))
pp.pprint(dict(r4.headers))

r1.headers和r2.headers内容如下,内容稍微有点儿差异。head()方法的请求头少了两项,毕竟head()本就是请求HTTP消息请求头的内容。

    

r3.header和r4.header内容一致。

上面响应头各项解释如下,响应头也还有许多其他选项。

响应头描述参数内容
Cache-Control告诉所有的缓存机制是否可以缓存及哪种类型'Cache-Control' : 'no-cache'
Connection处理完这次请求后,是断开连接还是继续保持连接'Connection' : 'close'或者'keep-alive'
Content-Encodingweb服务器支持的返回内容压缩编码类型'Content-Encoding' : 'gzip'
Content-Length服务器通过这个头告诉浏览器回送数据的长度'Content-Length' : '348'
Content-Type服务器通过这个头告诉浏览器回送数据的类型'Content-Type' : 'text/html; charset=utf-8'
Date返回响应消息的时间'Date' : 'Tue, 15 Nov 2010 08:12:31 GMT'
Last-Modified请求资源的最后修改时间'Last-Modified' : 'Tue, 15 Nov 2010 12:45:26 GMT'
Pragma包括实现特定的指令,它可应用到响应链上的任何接收方'Pragma' : 'no-cache'
Etag请求变量的实体标签的当前值'ETag' : “737060cd8c284d8af7ad3082f209582d”
Serverweb服务器软件名称'Server' : 'Apache/1.3.27 (Unix) (Red-Hat/Linux)'
Set-Cookie设置Http Cookie'Set-Cookie' : 'UserID=JohnDoe; Max-Age=3600; Version=1'
Transfer-Encoding文件传输编码'Transfer-Encoding' : 'chunked'

关于其他请求头和响应头选项的解释请戳这里https://www.cnblogs.com/unknows/p/8724872.html,这位博主写的很详细了,值得一看。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值