我在requests
进行了会话实验。有一件事让我感到困惑:当我重用一个会话时,在第二个请求中,cookie是空的。
这个简短的例子将其简化,结果与我尝试的所有主机相同。
import requests
import time
# ==== First Request ====
session = requests.Session()
response = session.get(url="http://www.example.com")
print(response.cookies)
# <RequestsCookieJar[<Cookie UID=759854d4058cf52df60bbbe2a19d1402f5aee (...)
time.sleep(2)
# ==== Second Request ====
response = session.get(url="http://www.example.com")
print(response.cookies)
# <RequestsCookieJar[]> (EMPTY!)
但根据documentation:
Session对象允许您跨越某些参数 要求。它还会在所有请求中保留cookie 会话实例(...)
我错过了什么?
编辑:答案解释说我做错了。 dir(session)
让我意识到Cookie存储在session.cookies
答案 0 :(得分:3)
这是因为您检查了响应的http标头而不是请求。
您的第一个请求是第一次在服务器上创建会话,服务器使用Set-Cookie
HTTP标头响应您的请求。这是您在第一个回复的打印输出中看到的内容。
在第二个请求中,会话已经创建,因此服务器不需要在响应中包含cookie。
尝试检查您的请求而不是回复。