今天写了段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打印的不是发送的请求头