c# Cookies中不能包含逗号的解决方案

这是MSDN中的说明:

异常 条件
CookieException
name 为 null 或空字符串 ("")。

- 或 -

name 包含未经授权的字符。 使用以下字符之一将会导致异常:

  • 等号 (=)
  • 分号 (;)
  • 逗号 (,)
  • 换行符 (\n)
  • 回车符 (\r)
  • 制表符 (\t)
  • 空格字符
  • 美元符号 ($) 作为第一个字符
  • - 或 -

value 为 null,或者包含分号 (;) 或逗号
(,),而它们不包含在转义的双引号中。

逗号字符保留用作同一行上各个 Cookie 之间的分隔符。 下面的示例演示如何在 value 中使用逗号。

System.Net.Cookie cookie = new System.Net.Cookie("cookieID", "\"123,456\"");

第一种方法:

</pre><pre name="code" class="csharp">string cookieStr = webBrowser1.Document.Cookie;
                    if (!cookieStr.Contains("JSESSION_ID"))
                    {
                        return;
                    }
                    string[] cookstr = cookieStr.Split(';');
                    foreach (string str in cookstr)
                    {
                        string[] cookieNameValue = str.Split('=');
                        string cookieName = cookieNameValue[1].Trim().ToString();
                        cookieName = cookieName.Replace(",", "%2c");

                        Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieName);
                        ck.Domain = webBrowser1.Document.Domain;
                        myCookieContainer.Add(ck);
                    }

第二种方法:

string cookieStr = webBrowser1.Document.Cookie;
                    if (!cookieStr.Contains("JSESSION_ID"))
                    {
                        return;
                    }
                    string[] cookstr = cookieStr.Split(';');
                    foreach (string str in cookstr)
                    {
                        string[] cookieNameValue = str.Split('=');
                        string cookieName = cookieNameValue[1].Trim().ToString();
                        if (cookieName.Contains(","))
                        {
                            cookieName = "\"" + cookieName + "\"";
                        }
                        Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieName);
                        ck.Domain = webBrowser1.Document.Domain;
                        myCookieContainer.Add(ck);
                    }
时间: 2024-10-12 22:53:12

c# Cookies中不能包含逗号的解决方案的相关文章

ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: 对于字符串的截取,truncate函数只适合英文用户,对与中文用户来说,使用 truncate会出现乱码,而且对于中文英文混合串来说,截取同样个数的字符串,实际显示长度上却不同,一个中文的长度大致相当于两个英文的长度.此外,truncate不能同时兼容GB2312.UTF-8等编码. 解决方法:自

iOS开发中的数据安全隐患和解决方案

移动互联网的兴起,每天都会涌现大量的app产品,无论公司开发还是个人开发,大家都在追求更快的抢占市场,但是确忽略了打磨产品,也忽略了移动开发中的数据安全隐患,如果我们用Charles工具,很容易截获到很多知名的app的传输的隐私数据,包括用户名和账号信息等.比如下图是我用Charles(青花瓷)软件截获糗事百科明文方式传输的用户名和账号信息,网上了解到神州租车和一嗨租车的用户登陆也是明文传输,明文传输很容易被截获.下文我就将我今天查阅各种资料学到的关于iOS中数据安全的知识总结下来和大家分享.

Android中自定义ListView无法响应OnItemClickListener中的onItemClick方法问题解决方案

如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView 的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为 false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了 我们可以通过对Item Layout的根控件设置其android:descendantFocusability="blo

另一个SqlParameterCollection中已包含SqlParameter

一般情况下,我们定义的一个SqlParameter参数数组,如: SqlParameter[] parms =             {                new SqlParameter("@DateTime1", dtBegin),                new SqlParameter("@DateTime2", dtEnd)            }; 如果只给一个SqlCommand使用,这种情况的参数使用,不会出现异常,但如果该参数

【EF框架】另一个 SqlParameterCollection 中已包含 SqlParameter。

查询报表的时候需要通过两次查询取出数据. 第一次,用count(*)查出总数: 第二次,用rownumber分页取出想要的页内容: 为了防止sql注入,使用SqlParameter来传递参数 List<SqlParameter> paramsList = new List<SqlParameter>(); //参数列表 paramsList.Add(new SqlParameter("@schSno", schSno));//校区 StringBuilder w

《Python CookBook2》 第一章 文本 - 检查字符串中是否包含某字符集合中的字符 &amp;&amp; 简化字符串的translate方法的使用

检查字符串中是否包含某字符集合中的字符  任务: 检查字符串中是否出现了某个字符集合中的字符 解决方案: 方案一: import itertools def containAny(seq,aset): for item in itertools.ifilter(aset.__contains__,seq): return True return False if __name__ == "__main__": l1 = list('python') l2 = set('x') prin

灵魂拷问:如何检查Java数组中是否包含某个值 ?

摘自:https://www.cnblogs.com/qing-gee/p/12053156.html 在逛 programcreek 的时候,我发现了一些专注细节但价值连城的主题.比如说:如何检查Java数组中是否包含某个值 ?像这类灵魂拷问的主题,非常值得深入地研究一下. 另外,我想要告诉大家的是,作为程序员,我们千万不要轻视这些基础的知识点.因为基础的知识点是各种上层技术共同的基础,只有彻底地掌握了这些基础知识点,才能更好地理解程序的运行原理,做出更优化的产品. 我曾在某个技术论坛上分享过

iOS中UITableViewCell的重用问题解决方案

UITableViewCell重用 为了能够保证tableViewCell能够高效的执行,Objective-c中引进了重用队列的机制,重影现象也是在重用队列时经常遇到的问题,那么如何解决这个问题呢?下面给出了几种解决办法. 第一种解决方法 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSArray *subViews = cell

(算法)判断字符串中是否包含HelloWorld

题目: 给定某字符串,判断该字符串中是否包含HelloWorld,出现HelloWorld不一定要连续,但顺序不变,如“HeByello,ByeWorByeld”就包含“HelloWorld”. 思路: 通过i,j来遍历两个字符串str1,str2(HelloWorld),假设长度分别为m,n: 当i>m或者j>n,则不包含: 当i<m且j==n-1,且str1[i]==str2[j],则包含: 当i<m且j<n,如果str1[i]==str2[j],i++,j++;否则,i