Многие веб-приложения отправляют файлы cookie в нескольких заголовках Set-Cookie, один заголовок для одного файла cookie. Запросы объединяют эти заголовки в один большой заголовок, разделенный запятой.
Из того же веб-приложения в requests.get
Set-Cookie: ASP.NET_SessionId=token1; path=/; HttpOnly
Set-Cookie: Cookie1=token2; path=/ecp
Set-Cookie: X-BEResource=WIN-RBFR0BDA7V7.testlab.net~1; path=/ecp/15.0.516.30; HttpOnly
Set-Cookie: X-BackEndCookie=token3; expires=Mon, 03-Apr-2017 12:25:07 GMT; path=/ecp; HttpOnly
В запросах:
соотв. заголовки выглядят так
Set-Cookie: ASP.NET_SessionId=token1; path=/; HttpOnly,
Cookie1=token2; path=/ecp,
X-BEResource=WIN-RBFR0BDA7V7.testlab.net~1; path=/ecp/15.0.516.30; HttpOnly,
X-BackEndCookie=token3; expires=Thu, 06-Apr-2017 08:27:22 GMT; path=/ecp; HttpOnly
Firefox, IE, Chrome неверно интерпретировали эти файлы cookie, потому что разделителем является запятая, а в поле EXPIRES запятая отделяет день и дату.
Основная проблема в модификации трафика. На мой взгляд, тогда сервер отправляет несколько заголовков. Библиотека должна возвращать несколько заголовков.
Запросы не обещают оставить заголовки в том виде, в котором они были получены с сервера. Прямо сейчас я настоятельно рекомендую вам использовать cookiejar Requests для хранения файлов cookie, а не извлекать их из заголовков: мы правильно вставляем их туда.
В долгосрочной перспективе нам, вероятно, следует добавить исправление, чтобы исключить заголовок Set-Cookie
из присоединения таким образом.
Это нас укусило и стоило нам нескольких часов. Я хочу проголосовать за то, чтобы оставить Set-Cookie
нетронутым. Почему запросы все равно возятся с заголовками? Есть ли для этого веская причина? ИМХО это всем только усложняет. Что мне не хватает?
Спасибо за хорошую работу!
Привет, есть способ правильно анализировать заголовки с https://github.com/Ousret/kiss-headers requests
не сможет изменить их представление для заголовков в ближайшее время.
Самый полезный комментарий
Запросы не обещают оставить заголовки в том виде, в котором они были получены с сервера. Прямо сейчас я настоятельно рекомендую вам использовать cookiejar Requests для хранения файлов cookie, а не извлекать их из заголовков: мы правильно вставляем их туда.
В долгосрочной перспективе нам, вероятно, следует добавить исправление, чтобы исключить заголовок
Set-Cookie
из присоединения таким образом.