请求CookieJar空,甚至认为页面有它

时间:2016-04-14 19:09:56

标签: python cookies python-requests

我在Python 3.5.1上使用请求,代码的相关部分如下:

<Directory "C:/Developments/Projects/php/laravel/t-ravel/public">
     Options Indexes FollowSymLinks Includes ExecCGI
     AllowOverride All
     Require all granted
</Directory>

req = requests.post(self.URL, data={"username": username, "password": password}) self.cookies = {"MOODLEID1_": req.cookies["MOODLEID1_"], "MoodleSession": req.cookies["MoodleSession"]} 有正确的页面,POST正在按预期工作,我做了一些打印来检查,并且它已通过。

我的输出:

self.URL

我试图在运行时调试以检查Traceback (most recent call last): File "D:/.../main.py", line 14, in <module> m.login('first.last', 'pa$$w0rd!') File "D:\...\moodle2.py", line 14, in login self.cookies = {"MOODLEID1_": req.cookies["MOODLEID1_"], "MoodleSession": req.cookies["MoodleSession"]} File "D:\...\venv\lib\site-packages\requests\cookies.py", line 287, in __getitem__ return self._find_no_duplicates(name) File "D:\...\venv\lib\site-packages\requests\cookies.py", line 345, in _find_no_duplicates raise KeyError('name=%r, domain=%r, path=%r' % (name, domain, path)) KeyError: "name='MOODLEID1_', domain=None, path=None" 有什么。但我得到的是令人惊讶的,至少对我而言。如果你在req.cookies上设置一个断点并运行self.cookies = {...},我会得到一个空列表,就像那里没有任何cookie一样。

该网站确实发送了Cookie,使用Chrome扩展程序进行了检查,我找到了2,&#34; MOODLEID1 _&#34;和&#34; MoodleSession&#34;,为什么我没有得到它们?

1 个答案:

答案 0 :(得分:1)

回复似乎不包含任何Cookie。在Set-Cookie中查找一个或多个req.headers标题。

存储在浏览器中的Cookie存在,因为响应包含每个Cookie的Set-Cookie标头。您必须找到服务器设置这些cookie的响应;显然它不是这个响应。

如果您需要在请求中保留这些Cookie(一旦设置),请使用requests.Session() object;这将保留响应返回的任何cookie,并根据新请求再次发送出去。