当前位置:  编程语言>c#/asp.net

c#/ASP.NET操作cookie(读写)代码示例

 
分享到:
    发布时间:2013-9-29  


     Cookie是存在硬盘上,IE存cookie的地方和Firefox存cookie的地方不一样。不同的操作系统也可能存cookie的地方不一样。不同的浏览器会在各自的独立空间存放Cookie, 互不干涉以我的windows7, IE8为例, cookie存在这: C:\Users...

   Cookie是存在硬盘上,IE存cookie的地方和Firefox存cookie的地方不一样。不同的操作系统也可能存cookie的地方不一样。

不同的浏览器会在各自的独立空间存放Cookie, 互不干涉以我的windows7, IE8为例,  cookie存在这:

C:\Users\xiaoj\AppData\Local\Microsoft\Windows\Temporary Internet Files

注意: 缓存文件和cookie文件,是存在一起的, 都在这个目录下。

你也可以这样找, 打开IE,点击Tools->Internet Options->General Tab下的->Browsing history下的Setting按钮,弹出的对话框中点击View files。不同的网站会有不同的cookie文件。

   在Asp.net中,读写Cookie是通过使用HttpCookie类来完成的,它的定义如下:

public sealed class HttpCookie
{
    // 获取或设置将此 Cookie 与其关联的域。默认值为当前域。
    public string Domain { get; set; }
    // 获取或设置此 Cookie 的过期日期和时间(在客户端)。
    public DateTime Expires { get; set; }
    // 获取一个值,通过该值指示 Cookie 是否具有子键。
    public bool HasKeys { get; }
    // 获取或设置一个值,该值指定 Cookie 是否可通过客户端脚本访问。
    // 如果 Cookie 具有 HttpOnly 属性且不能通过客户端脚本访问,则为 true;否则为 false。默认为 false。
    public bool HttpOnly { get; set; }
    // 获取或设置 Cookie 的名称。
    public string Name { get; set; }
    // 获取或设置要与当前 Cookie 一起传输的虚拟路径。默认值为当前请求的路径。
    public string Path { get; set; }
    // 获取或设置一个值,该值指示是否使用安全套接字层 (SSL)(即仅通过 HTTPS)传输 Cookie。
    public bool Secure { get; set; }
    // 获取或设置单个 Cookie 值。默认值为空引用。
    public string Value { get; set; }
    // 获取单个 Cookie 对象所包含的键值对的集合。
    public NameValueCollection Values { get; }
    // 获取 System.Web.HttpCookie.Values 属性的快捷方式。
    public string this[string key] { get; set; }
}


Cookie写入浏览器的过程:

我们可以使用如下代码在Asp.net项目中写一个Cookie 并发送到客户端的浏览器(为了简单我没有设置其它属性)。

HttpCookie cookie = new HttpCookie("MyCookieName", "string value");
Response.Cookies.Add(cookie);


Asp.net获取Cookie的过程:

我们可以使用如下代码在Asp.net项目中读取一个Cookie

HttpCookie cookie = Request.Cookies["MyCookieName"];
if( cookie != null )
    labCookie1.Text = cookie.Value;
else
    labCookie1.Text = "未定义";

   Cookie是放在请求头中,发送到服务端的。如果你一直刷新页面,就能发现, 每次HTTP请求,Cookie都会被发送。当然了,浏览器也不是发送它所接收到的所有Cookie,它会检查当前要请求的域名以及目录, 只要这二项目与Cookie对应的Domain和Path匹配,才会发送。对于Domain则是按照尾部匹配的原则进行的。所以,我在访问 www.09me.com 时,浏览器并不会将我在浏览 www.169it.com 所接收到的 Cookie 发出去。


删除Cookie:

   其实就是在写Cookie时,设置Expires为一个【早于现在时间的时间】。也就是:设置此Cookie已经过期, 浏览器接收到这个Cookie时,便会删除它们。

HttpCookie cookie = new HttpCookie("MyCookieName", null);
cookie.Expires = new DateTime(1900, 1, 1);
Response.Cookies.Add(cookie);

浏览器对于Web服务器应答包头中Cookie的操作步骤

1. 从Web服务器的应答包头中提取所有的cookie。

2. 解析这些cookie的组成部分(名称,值,路径等等)。

3. 判定主机是否允许设置这些cookie。允许的话,则把这些Cookie存储在本地。


浏览器对Web服务器请求包头中所有的Cookie进行筛选的步骤:

1. 根据请求的URL和本地存储cookie的属性,判断那些Cookie能被发送给Web服务器。

2. 对于多个cookie,判定发送的顺序。

3. 把需要发送的Cookie加入到请求HTTP包头中一起发送。




本类别最新文章推荐:


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号