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);
                    }



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

上一篇:.Net(c#)汉字和Unicode编码互相转换


下一篇:Docker下Python Flask+Redis+MySQL+RQ队列简单配置