使用requests.Session()时Set-Cookie头不显示及Cookie头不携带问题
问题1:调用/cookies/set接口后响应头看不到Set-Cookie
这是因为httpbin的/cookies/set接口会返回3xx重定向响应(这个响应头里才包含Set-Cookie),而requests默认会自动跟随重定向,你最终拿到的r是重定向后的200响应,这个响应的headers里没有Set-Cookie。
要获取原始重定向响应里的Set-Cookie,关闭自动重定向即可:
s = requests.Session() # 关闭自动重定向 r = s.get('https://httpbin.org/cookies/set/sessioncookie/123456789', allow_redirects=False) print(r.headers) # 现在能看到Set-Cookie头
问题2:第二个请求的request.headers看不到Cookie
requests.Session自动管理的cookie,不会被放到request.headers字典里——request.headers只显示你显式设置的请求头。但这不代表cookie没被携带,你可以通过以下方式验证:
- 查看Session当前存储的所有cookie:
print(s.cookies)
- 查看请求实际发送的cookie(需访问
_cookies属性):
print(r2.request._cookies)
- 直接用httpbin的
/cookies接口验证,返回的JSON会显示当前请求携带的cookie:
r2 = s.get("https://httpbin.org/cookies") print(r2.json()) # 输出会包含sessioncookie=123456789,说明cookie已正确携带
内容的提问来源于stack exchange,提问作者Jarrett GXZ
相关产品推荐
相关产品推荐

