Python HTTP响应中缺失的cookie

1 投票
1 回答
2147 浏览
提问于 2025-04-18 02:32

我正在为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是唯一一个设置了HttpOnlypath=/参数的。其他两个cookie只有过期时间和实际数据。

1 个回答

3

response.cookies 里只包含了那个响应所设置的 cookies。如果你被重定向了,可能会发现一些 cookies 是在重定向过程中设置的。不过,这些 cookies 不会出现在 response.cookies 里,而是在 response.history[i].cookies 中可以找到。

如果你想全面了解有哪些 cookies 被设置,最好查看 Session 上的 cookies 字典,而不是单独查看响应。

撰写回答