Python HTTP响应中缺失的cookie
我正在为Sickbeard开发一个额外的提供者,但在处理cookies时遇到了一些问题。
我花了很长时间在寻找为什么在使用requests时,HTTP响应中缺少cookies。
login_params = {'uid': sickbeard.PROVIDER_USERNAME,
'pwd': sickbeard.PROVIDER_PASSWORD,
}
try:
response = self.session.post(self.urls['login'], data=login_params, timeout=30)
except (requests.exceptions.ConnectionError, requests.exceptions.HTTPError), e:
logger.log(u'Unable to connect to ' + self.name + ' provider: ' +ex(e), logger.ERROR)
return False
响应中只包含一个cookie,就是__cdfuid这个cookie:
requests.utils.dict_from_cookiejar(self.session.cookies)['__cfduid']
我在登录提供者时希望得到的cookies是__cdfuid | uid | pass:
requests.utils.dict_from_cookiejar(self.session.cookies)['__cfduid']
requests.utils.dict_from_cookiejar(self.session.cookies)['uid'] #Not passed
requests.utils.dict_from_cookiejar(self.session.cookies)['pass'] #Not passed
我不确定这是否重要,但__cdfuid这个cookie是唯一一个设置了HttpOnly和path=/参数的。其他两个cookie只有过期时间和实际数据。
1 个回答
3
response.cookies
里只包含了那个响应所设置的 cookies。如果你被重定向了,可能会发现一些 cookies 是在重定向过程中设置的。不过,这些 cookies 不会出现在 response.cookies
里,而是在 response.history[i].cookies
中可以找到。
如果你想全面了解有哪些 cookies 被设置,最好查看 Session
上的 cookies 字典,而不是单独查看响应。