我关于Python 3.5.1,使用要求,该代码的相关部分如下:要求CookieJar空甚至认为该页面有它
req = requests.post(self.URL, data={"username": username, "password": password})
self.cookies = {"MOODLEID1_": req.cookies["MOODLEID1_"], "MoodleSession": req.cookies["MoodleSession"]}
self.URL
具有正确的页面,并使用POST正在按预期工作,我做了一些印刷检查,并通过了。
我的输出:
Traceback (most recent call last):
File "D:/.../main.py", line 14, in <module>
m.login('juan.siqueira', '211621QWe!')
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 = {...}
上放置断点并运行[(c.name, c.value, c.domain) for c in req.cookies]
,我会得到一个空白列表,就像那里没有任何cookie。
该网站确实发送cookies,通过Chrome扩展程序进行检查,发现2,“MOODLEID1_”和“MoodleSession”,为什么我没有收到它们?
'req.headers'显示是由服务器发送的?有没有任何Set-Cookie标题?如果没有,那么服务器没有发送任何cookie。 –
我没有在'req.headers'上找到任何'Set-Cookie',但在Chrome上我可以使用扩展名清楚地看到这两个cookie。为什么我无法在脚本中看到它们? – JChris
Cookie总是通过“Set-Cookie”标头从服务器发送到客户端。 Chrome中的Cookie并不意味着它们是由您现在发布的网址设置的;它们可能是由一个*不同的*网址设置的。您需要找到服务器发布“Set-Cookie”标头的URL。 –