. Моя программа C# Windows Forms должна разговаривать с серверами, которые содержат несколько заголовков Set-Cookie
в ответах HTTP.HttpWebResponse mishandles значения нескольких заголовков Set-Cookie, то есть CookieContainer не хранит все предполагаемые файлы cookie.
.NET HttpWebResponse
, кажется, объединяет содержимое нескольких заголовков Set-Cookie
в одно значение, оставляя окончательное значение недействительным. Это приводит к тому, что отправленные файлы cookie не сохраняются должным образом при использовании связанного CookieContainer
.
Пример
HttpWebRequest
инициирует запрос, и сервер отвечает ...
HTTP/1.1 200 OK
....
Set-Cookie: cookie1=123; Domain=127.0.0.1; Path=/; Expires=Wed, 13 Jan 2021 22:23:01 GMT
Set-Cookie: cookie2=456; Domain=127.0.0.1; Path=/somepath; Expires=Wed, 13 Jan 2021 22:23:01 GMT
....
... и значение заголовка HttpWebResponse
«s (копируется из VS Debugger) является:
Set-Cookie: cookie1=123; Domain=127.0.0.1; Path=/; Expires=Wed, 13 Jan 2021 22:23:01 GMT,cookie2=456; Domain=127.0.0.1; Path=/somepath; Expires=Wed, 13 Jan 2021 22:23:01 GMT
HttpWebResponse
содержит только cookie1
в Cookies
.
.NET Reflection на оригинале HttpWebRequest
«s CookieContainer
, чтобы получить все куки (https://stackoverflow.com/a/15991071) также показывает только cookie1
анализируется в объект и cookie2
игнорируется.
Есть ли способы получить несколько заголовков Set-Cookie
, обработанных должным образом, не прибегая к (значительно) более низким или более сложным альтернативам HttpWebResponse
?
Привет, вы решили? Потому что меня интересует эта проблема. – czubehead
Технически, нет. Я узнал, что проблема связана с сервером, а не с клиентом. Сервер был быстрым приложением C# WinForms, которое я написал для тестирования, и в этом я делал 'ctx.Response.Headers.Add (« Set-Cookie: .... »);' несколько раз. Сервер объединил их в один заголовок «Set-Cookie». Поскольку сервер был только для быстрого тестирования, ошибка в «HttpWebResponse» для меня не была большой проблемой в долгосрочной перспективе, но, к сожалению, проблема на самом деле не решена. – user1092719