obsługa przecinka wewnątrz wartości cookie za pomocą .net's (C #) System.Net.Cookie
Tworzę klienta, który odwiedza witrynę i loguje się + automatycznie wykonuje niektóre zadania, jednak ostatnio zaktualizowali swoje pliki cookie, aby (z jakiegokolwiek powodu ...) zawierać przecinek w swoim pliku identyfikacyjnym.
Na przykład ciasteczko będzie miało wartość podobną do tej:
a,bcdefghijklmnop
Problem polega na tymmsdn nie możesz używać przecinka ani kropki w wartości cookie. To, czego szukam, to sposób na obejście tego ograniczenia, jakiś sposób, aby praca Cookie w .net była przyjemna z przecinkami. Odkryłem, że serwer wysyła nagłówek „SET-COOKIE” do klienta i zgaduję, że to właśnie jest analizowane, ale wydaje się, że oczywiście nadaje to specjalne znaczenie komanom i średnikom (a więc ograniczenie klasa wewnątrz samego .NET).
Ale w jaki sposób przeglądarka, taka jak IE, Firefox, itp. ... obsługuje plik cookie prawidłowo (jak to oczywiste, ponieważ witryna działa poprawnie w każdej przeglądarce, z którą ją przetestowałem.) Czy jest jakiś sposób na wymuszenie tego? zachowanie w .NET?
Każda pomoc byłaby doceniana, dzięki.
--- EDYTOWAĆ ---dodatkowe informacje:
Mój kod wygląda mniej więcej tak:
request = (HttpWebRequest)WebRequest.Create(URI);
request.CookieContainer = Program.client.cookieJar;
Gdzie cookieJar jest zdefiniowany w Program.client jako:
CookieContainer cookieJar = new CookieContainer();
Po przejściu i wydrukowaniu wszystkich plików cookie w CookieContainer otrzymuję coś takiego: (pliki cookie, w formacie: „nazwa” -> „wartość”)
"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"
Istotą problemu wydaje się to, że przecinki i dwukropki są znakami zarezerwowanymi w łańcuchu nagłówka SET-COOKIE ... ale w jaki sposób przeglądarki to obsługują? Prawdopodobnie mogę sam przeanalizować ciąg, ale nie wiem, jak obejść takie sytuacje: (nagłówek HTTP, w formacie: „nazwa” -> „wartość”)
"Set-Cookie" -> "messedup_cookie=a,bcdefghijklmnop; path=/; domain=.domain.com; expires=Sat, 15-Aug-2009 09:14:24 GMT,anothervariable=i am the value;"
Jak widać, sekcja wygasania szuka przecinka zamiast średnika, aby odróżnić się od następnej zmiennej. O ile wiem, jest w formacie:
cookie1_var1=value; cookie1_var2=value,cookie2_var1=value; cookir2_var2=value
Ale jeśli to prawda, czy istnieje elegancki sposób radzenia sobie z przecinkami, które mogą wystąpić wewnątrz jednej z wartości?