【问题标题】:Missing cookies in HTTP response PythonHTTP响应Python中缺少cookie
【发布时间】:2014-05-27 02:13:51
【问题描述】:

我正在为 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 是唯一一个具有 HttpOnlypath=/ 参数设置。另外两个只有过期和实际数据。

【问题讨论】:

  • 什么是response.cookies
  • 只有一个参数,__cfduid 不是其他两个。
  • 您怎么知道uidpass cookie 已设置?
  • 当我查看response.text 时,我看到我已成功登录,因此我认为cookie 已设置。当我在 Chrome 中尝试相同的发布请求时,我得到了带有 uidpass cookie 集的标题。
  • 成功登录并不意味着必须设置uidpass。如果在请求之前清除 Chrome 中的 cookie 会发生什么?

标签: python http session cookies python-requests


【解决方案1】:

response.cookies 仅包含 由该响应设置的 cookie。如果您被重定向,您可能会发现重定向设置了一些 cookie。这些不会出现在response.cookies 上,但它们会出现在response.history[i].cookies 上。

如果您想全面了解设置了哪些 cookie,则应始终检查 Session 上的 cookie 字典,而不是响应。

【讨论】:

  • 是的,但是我在上面发布的内容是如何使用self.session 获取cookie 并且只返回__cfduid cookie?
  • 检查所有历史响应并确认 cookie 确实已设置。
猜你喜欢
  • 2014-08-27
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多