文档章节

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

 小星星程序员
发布于 2014/08/12 13:29
字数 1026
阅读 380
收藏 4


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类来完成的,它的定义如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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 并发送到客户端的浏览器(为了简单我没有设置其它属性)。

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


Asp.net获取Cookie的过程:

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

1
2
3
4
5
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时,便会删除它们。

1
2
3
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-最新最全的IT资讯]
本文标题:c#/ASP.NET操作cookie(读写)代码示例


本文转载自:http://www.169it.com/article/4672756936756609764.html

粉丝 4
博文 42
码字总数 2544
作品 0
成都
私信 提问
asp.net core系列 39 Razor 介绍与详细示例

一. Razor介绍   在使用ASP.NET Core Web开发时, ASP.NET Core MVC 提供了一个新特性Razor。 这样开发Web包括了MVC框架和Razor框架。对于Razor来说它是一个新特性,在官方介绍ASP.NET Cor...

花阴偷移
03/08
0
0
Asp.Net Core 2.0 项目实战(6)Redis配置、封装帮助类RedisHelper及使用实例

Asp.Net Core 2.0 项目实战(1) NCMVC开源下载了 Asp.Net Core 2.0 项目实战(2)NCMVC一个基于Net Core2.0搭建的角色权限管理开发框架 Asp.Net Core 2.0 项目实战(3)NCMVC角色权限管理前...

郑州-在路上
2018/05/17
0
0
ASP.NET跨页面传值技巧总结

ASP.NET跨页面传值技巧总结 1.使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。 如果是传递一个或多个性要求不高或是结构简单的数值时,...

庸人谷
2013/02/28
81
0
ASP.net与JavaEE语法、内置对象的对比

1 各自的HelloWord版本 1.1 ASP <% Response.Write("hello asp") %> 文件名为test.asp。 1.2 ASP.net <%@ page Language="C#" %> <% Response.Write("hello asp.net"); %> 文件名为test.aspx......

流浪的狗
2017/12/24
0
0
关于上下文

Susan Warren Microsoft Corporation 编写 Web 应用程序时最常见的问题之一,是要让代码知道它的执行上下文。让我们通过一个简单的例子(即个性化页面)来说明这个问题: 请登录。 与 欢迎 ...

晨曦之光
2012/03/09
151
0

没有更多内容

加载失败,请刷新页面

加载更多

查看线上日志常用命令

cat 命令(文本输出命令) 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们要输出当前这个日志的前后几行: 显示file文件里匹配nick那行以及上下5行 cat error.log | grep -C ...

xiaolyuh
18分钟前
3
0
六、Java设计模式之工厂方法

工厂方法定义: 定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行 类型:创建型 工厂方法-使用场景: 创建对象需要大量重复的代码 ...

东风破2019
24分钟前
3
0
win服务器管理遇到的一系列问题记录

有些小伙伴在使用iis7远程桌面管理工具的时候总是会遇到一系列的问题,下面就是为大家介绍一下服务器日常管理过程中出现的问题及我的解决办法和心得。希望能帮到大家。   拒绝服务器重新启...

1717197346
32分钟前
2
0
flutter 剪切板 复制粘贴

复制粘贴功能 import 'package:flutter/services.dart'; Clipboard.setData(ClipboardData(text:_text));Clipboard.getData;...

zdglf
34分钟前
3
0
如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?

面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费...

米兜
35分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部