python 为什么session.headers打印的不是发送的请求头

今天写了段pyton代码

session = requests.session()
session.post(url,headers=headers,data=data)
print(session.headers)

但是打印的结果却是

{'User-Agent': 'python-requests/2.28.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

为什么会这样呢?

原来print(session.headers) 打印的是会话对象的默认请求头,而不是我发送的请求头。

session.headers 通常包含了一些默认的请求头,这些请求头在每次使用会话发送请求时都会被发送。这些默认的请求头可能包括:

  • User-Agent: 标识客户端的浏览器和操作系统信息。
  • Accept: 客户端能够处理的内容类型。
  • Accept-Language: 客户端偏好的语言。
  • Accept-Encoding: 客户端能够接受的压缩格式。
  • DNT: Do Not Track,表示用户不希望被追踪。
  • Connection: 通常设置为 keep-alive,表示希望保持连接。

在我的代码中,即使在 post 方法中指定了 headers 参数,session.headers 打印的仍然是会话对象的默认请求头,而不是我发送的请求头。这是因为 post 方法中的 headers 参数是用于覆盖会话的默认请求头的,但它不会改变会话对象的默认请求头。

如果想要查看发送的请求头,需要在发送请求后立即打印响应对象的请求头。例如:

pythonresponse = session.post(url, headers=headers, data=data)
print(response.request.headers)  # 这将打印出实际发送的请求头

请注意,response.request.headers 是从响应对象中获取的,它包含了实际发送到服务器的请求头。

未经允许不得转载:445IT之家 » python 为什么session.headers打印的不是发送的请求头

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏