我正在为 Sickbeard 构建一个额外的提供程序,但我的 cookie 有问题。 为什么在使用 requests 时 HTTP 响应中缺少 cookie,我已经找了很长时间。
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']
我在登录提供商时获得(和想要)的 cookie 是 __cdfuid | uid | 通过:
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=/ 参数设置。另外两个只有过期时间和实际数据。
最佳答案
response.cookies
仅包含由该响应设置的 cookie。如果您被重定向,您可能会发现一些 cookie 是由重定向设置的。这些不会出现在 response.cookies
上,但它们会出现在 response.history[i].cookies
上。
如果您想全面了解已设置的 cookie,则应始终检查 Session
上的 cookie 字典,而不是响应。
关于python - HTTP 响应 Python 中缺少 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23037730/