我關於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。 –