Запросы Python Session не передают cookies?
Я следовал документации, насколько я могу судить, но кажется, что объект Session библиотеки requests не сохраняет cookies. Вот мой простой код:
with requests.Session() as s:
url = '%s://'%http+serverStr+'/login/'
s.get(url)
payload = {'username': 'sfprod', 'password': <password>,
'csrfmiddlewaretoken': s.cookies['csrftoken'], 'next': '/'}
login_resp = s.post(url, data=payload, headers=(dict(Referer=url)))
Это подключение к серверу Django. Когда я запускаю первый вызов s.get()
, я вижу, что возвращаются такие файлы cookie:
<RequestsCookieJar[Cookie(version=0, name='csrftoken', value='Iw2k4RF5QIy6oNOA71681oq4kGVBxjzTmQCULicbWdr5ZfH1Kunrn30DNupQtFhF', port=None, port_specified=False, domain='gancho.local', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=True, expires=1761043315, discard=False, comment=None, comment_url=None, rest={'SameSite': 'Lax'}, rfc2109=False)]>
Однако когда происходит второй вызов, серверу не передаются никакие cookies. Член COOKIES
полученного объекта запроса пуст, и сервер возвращает 403 Forbidden. Я просмотрел код csrftoken в отладчике, и он отклоняет запрос из-за отсутствия cookie (если быть точным, из-за отсутствия значения CSRF_COOKIE
в члене META
запроса, но я предполагаю, что это происходит из-за отсутствия cookie).
Я могу
войти в систему через браузер, и в этом случае я вижу cookie в запросе, поэтому я думаю, что это не проблема настройки сервера. Нужно ли что-то сделать с сессией, чтобы куки сохранились?