/// <summary>
/// 一个到多个Cookie的字符串添加到CookieCollection集合中【isGood代码】
/// </summary>
/// <param name="s">Cookie的字符串</param>
/// <param name="defaultDomain">站点主机部分</param>
public static CookieCollection strCokAddCol(string s, string defaultDomain)
{
CookieCollection cc = new CookieCollection();
if (string.IsNullOrEmpty(s) || s.Length < 5 || s.IndexOf("=") < 0) return cc;
if (string.IsNullOrEmpty(defaultDomain) || defaultDomain.Length < 5) return cc;
s.TrimEnd(new char[] { ';' }).Trim();
Uri urI = new Uri(defaultDomain);
defaultDomain = urI.Host.ToString();
//用软件截取的cookie会带有expires,要把它替换掉【isGood代码】
if (s.IndexOf("expires=") >= 0)
{
s = replace(s, @"expires=[\w\s,-:]*GMT[;]?", "");
}
//只有一个cookie直接添加【isGood代码】
if (s.IndexOf(";") < 0)
{
System.Net.Cookie c = new System.Net.Cookie(s.Substring(0, s.IndexOf("=")), s.Substring(s.IndexOf("=") + 1));
c.Domain = defaultDomain;
cc.Add(c);
return cc;
}
//不同站点与不同路径一般是以英文道号分别【isGood代码】
if (s.IndexOf(",") > 0)
{
s.TrimEnd(new char[] { ',' }).Trim();
foreach (string s2 in s.Split(','))
{
cc = strCokAddCol(s2, defaultDomain, cc);
}
return cc;
}
else //同站点与同路径,不同.Name与.Value【isGood代码】
{
return strCokAddCol(s, defaultDomain, cc);
}
}
//添加到CookieCollection集合部分
private static CookieCollection strCokAddCol(string s, string defaultDomain, CookieCollection cc)
{
try
{
s.TrimEnd(new char[] { ';' }).Trim();
System.Collections.Hashtable hs = new System.Collections.Hashtable();
foreach (string s2 in s.Split(';'))
{
string s3 = s2.Trim();
if (s3.IndexOf("=") > 0)
{
string[] s4 = s3.Split('=');
hs.Add(s4[0].Trim(), s4[1].Trim());
}
}
string defaultPath = "/";
foreach (object Key in hs.Keys)
{
if (Key.ToString().ToLower() == "path")
{
defaultPath = hs[Key].ToString();
}
else if (Key.ToString().ToLower() == "domain")
{
defaultDomain = hs[Key].ToString();
}
}
//【isGood代码】
foreach (object Key in hs.Keys)
{
if (!string.IsNullOrEmpty(Key.ToString()) && !string.IsNullOrEmpty(hs[Key].ToString()))
{
if (Key.ToString().ToLower() != "path" && Key.ToString().ToLower() != "domain")
{
Cookie c = new Cookie();
c.Name = Key.ToString();
c.Value = hs[Key].ToString();
c.Path = defaultPath;
c.Domain = defaultDomain;
cc.Add(c);
}
}
}
}
catch { }
return cc;
}

/// <summary>
/// 替换字符【isGood代码】
/// </summary>
/// <param name="strSource">来源</param>
/// <param name="strRegex">表达式</param>
/// <param name="strReplace">取代</param>
public static string replace(string strSource, string strRegex, string strReplace)
{
try
{
Regex r;
r = new Regex(strRegex, RegexOptions.IgnoreCase | RegexOptions.Singleline);
string s = r.Replace(strSource, strReplace);
return s;
}
catch
{
return strSource;
}
}
#endregion

cookie转coontoin的更多相关文章

  1. 超大 Cookie 拒绝服务攻击

    有没有想过,如果网站的 Cookie 特别多特别大,会发生什么情况? 不多说,马上来试验一下: for (i = 0; i < 20; i++) document.cookie = i + '= ...

  2. IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题

    你是否遇到过当使用一个涉及到Cookie操作的网站或者管理系统时,IE 6.7.8.9下都跑的好好的,唯独到了IE10.11这些高版本浏览器就不行了?好吧,这个问题码农连续2天内遇到了2次.那么,我们 ...

  3. 解决cookie跨域访问

    一.前言 随着项目模块越来越多,很多模块现在都是独立部署.模块之间的交流有时可能会通过cookie来完成.比如说门户和应用,分别部署在不同的机器或者web容器中,假如用户登陆之后会在浏览器客户端写入c ...

  4. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  5. 一个诡异的COOKIE问题

    今天下午,发现本地的测试环境突然跑不动了,thinkphp直接跑到异常页面,按照正常的排错思路,直接看thinkphp的log 有一条 [ error ] [2]setcookie() expects ...

  6. [转载]Cookie/Session的机制与安全

    Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道.本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题. 因 ...

  7. jquery.cookie的使用

    今天想到了要为自己的影像日记增加赞的功能,并且需要用到cookie. 记得原生的js操作cookie也不是很麻烦的,但似乎jquery更简单,不过相比原生js,需要额外引入2个文件,似乎又不是很好,但 ...

  8. 跨域问题,前端主动向后台发送cookie

    跨域是什么? 从一个域名的网页访问另一个域名的资源,就会出现跨域.只要协议.端口.域名有一个不同就会出现跨域 例如: 1.协议不同  http://www.baidu.com:80 和 https:/ ...

  9. 【流量劫持】沉默中的狂怒 —— Cookie 大喷发

    精简版:http://www.cnblogs.com/index-html/p/mitm-cookie-crack.html 前言 上一篇文章 讲解了如何借助前端技术,打造一个比 SSLStrip 更 ...

随机推荐

  1. Spring Struts里用到的设计模式

    Bean工厂的Factory模式 AOP的Proxy模式

  2. 1.2(学习笔记)Servlet基础(doGet、doPost、生命周期、页面跳转)

    一.doGet()与doPost() 我们在TestServlet类中重写doGet().doPost().service(). import javax.servlet.ServletExcepti ...

  3. 1.3(java学习笔记)构造方法及重载

    构造方法,用于对象的初始化,在创建对象时被自动调用的特殊方法.构造方法名称与类名一致,通过new调用. 下面通过代码来详细讲解 public class Point { int x, y; publi ...

  4. oracle--v$lock type字段详解

    Name Description AD ASM Disk AU Lock AF Advisor Framework AG Analytic Workspace Generation AK GES De ...

  5. sting , CSting的区别

    1.string 是C++中的字符串. 字符串对象是一种特殊类型的容器,专门设计来操作的字符序列. 不像传统的c-strings,只是在数组中的一个字符序列,我们称之为字符数组,而C + +字符串对象 ...

  6. mongodb_性能监控

    一.使用mongostat.exe cd C:\Program Files\MongoDB\Server\3.0\bin\ --> mongostat.exe --> mongostat ...

  7. html里嵌入CSS的三种方式

    在HTML中定义CSS的方式有:Embedding(嵌入式).Linking(引用式).Inline(内联式),下面通过实例为大家详细介绍下它们的特点   在HTML中常用以下3种方式定义CSS:Em ...

  8. Difference between val() and text()

    .val() works on input elements (or any element with a value attribute?) and .text() will not work on ...

  9. Windows下搭建基于SSH的Git服务器

    Git客户端安装 客户端要同时安装在远程服务器和自己的电脑上,下载地址:http://msysgit.github.io/ 选择安装组件 :也可以默认选择; 图标组件(Addition icons) ...

  10. map-reduce任务的执行流程

    (1).客户端提交一个mr的jar包给JobClient(提交方式:hadoop jar ...) (2).JobClient通过RPC和JobTracker进行通信,返回一个存放jar包的地址(HD ...