обработка запятой внутри значения cookie с помощью .net (C #) System.Net.Cookie
Я создаю клиента для посещения веб-сайта и входа в систему +, выполняю некоторые задачи автоматически, однако недавно они обновили свои файлы cookie, чтобы (по какой-либо причине ...) содержать запятую в их идентификационном файле cookie.
Так, например, Cookie будет иметь значение, подобное этому:
a,bcdefghijklmnop
Проблема, согласноMSDN Вы не можете использовать ни запятую, ни точку внутри значения cookie. То, что я ищу, - это способ обойти это ограничение, какой-то способ сделать работу .net Cookie'а приятной с запятыми. Я обнаружил, что сервер действительно отправляет «SET-COOKIE» заголовок клиенту, и я предполагаю, что это то, что анализируется, но это также, очевидно, придает особое значение запятым и точкам с запятой (таким образом, ограничение класса внутри самого .NET)
Но тогда как браузер, такой как IE, Firefox и т. Д., Обрабатывает cookie правильно (как они явно делают, поскольку веб-сайт работает нормально в любых браузерах, с которыми я его тестировал). Возможно, существует способ заставить это поведение в .NET?
Любая помощь будет оценена, спасибо.
--- EDIT ---некоторая дополнительная информация:
Мой код выглядит примерно так:
request = (HttpWebRequest)WebRequest.Create(URI);
request.CookieContainer = Program.client.cookieJar;
Где cookieJar определяется в Program.client как:
CookieContainer cookieJar = new CookieContainer();
Когда я зацикливаюсь и распечатываю все куки в CookieContainer, я получаю что-то вроде этого: (куки, в формате: & quot; имя & quot; - & gt; & quot; значение & quot;)
"normal_cookie" -> "i am the value"
"messedup_cookie" -> "a"
"bcdefghijklmnop" -> ""
// What I should get is this:
"normal_cookie" -> "i am the value"
"messedup_cookie" -> "a,bcdefghijklmnop"
Кажется, что суть проблемы заключается в том, что запятые и точки с запятой являются зарезервированными символами в строке заголовка SET-COOKIE ... но тогда как браузеры справляются с этим? Я, вероятно, могу разобрать строку самостоятельно, но я не знаю, как обойти ситуации, подобные этой: (заголовок HTTP, в формате: & quot; имя & quot; - & quot; значение & quot;)
"Set-Cookie" -> "messedup_cookie=a,bcdefghijklmnop; path=/; domain=.domain.com; expires=Sat, 15-Aug-2009 09:14:24 GMT,anothervariable=i am the value;"
Как видите, раздел expires ищет запятую вместо точки с запятой, чтобы отличаться от следующей переменной. Насколько я могу судить, он в формате:
cookie1_var1=value; cookie1_var2=value,cookie2_var1=value; cookir2_var2=value
Но если это правда, есть ли элегантный способ справиться с запятыми, которые могут встречаться внутри одного из значений?