请求会话:cookie真的存在吗?

时间:2016-12-04 18:24:31

标签: python python-3.x session cookies python-requests

我在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

1 个答案:

答案 0 :(得分:3)

这是因为您检查了响应的http标头而不是请求。

您的第一个请求是第一次在服务器上创建会话,服务器使用Set-Cookie HTTP标头响应您的请求。这是您在第一个回复的打印输出中看到的内容。

在第二个请求中,会话已经创建,因此服务器不需要在响应中包含cookie。

尝试检查您的请求而不是回复。