我创建一个客户端访问一个网站,并自动+做了一些工作,但是他们最近更新了自己的饼干(不管出于什么原因...)包含其标识的cookie里面一个逗号。
因此,例如,cookie将有一个类似的值:
a,bcdefghijklmnop
问题是,根据MSDN不能使用逗号,也没有一个周期的cookie的值内。 我正在寻找的是解决此限制的一种方式,一些方法,使.NET的Cookie的工作很好用逗号。 我发现,服务器就发送一个“SET-COOKIE”标头到客户端,我猜这就是被解析,但也似乎明显对commans和分号赋予特殊的含义,以及(这样的限制里面.NET本身)的类。
但后来如何做一个浏览器,如IE,火狐等..处理cookie的正常(因为他们清楚这样做,因为网站我已经测试过它。任何浏览器工作正常)是否有可能办法迫使这在.NET中的行为吗?
任何帮助,将不胜感激,谢谢。
---编辑---
一些额外的信息:
我的代码看起来是这样的:
request = (HttpWebRequest)WebRequest.Create(URI);
request.CookieContainer = Program.client.cookieJar;
凡cookieJar在Program.client被定义为:
CookieContainer cookieJar = new CookieContainer();
当我遍历并在的CookieContainer打印出所有的饼干,我得到的是这样的:(饼干,格式为:“姓名” - >“值”)
"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报头,格式为:“姓名” - >“值”)
"Set-Cookie" -> "messedup_cookie=a,bcdefghijklmnop; path=/; domain=.domain.com; expires=Sat, 15-Aug-2009 09:14:24 GMT,anothervariable=i am the value;"
正如你所看到的,到期部分寻找一个逗号,而不是一个分号从下一个变量中脱颖而出。 至于我可以告诉大家,它的格式为:
cookie1_var1=value; cookie1_var2=value,cookie2_var1=value; cookir2_var2=value
但是,如果这是真的,是有一种优雅的方式来处理内部的一个值可能出现的逗号?