学习web开发,使用Cookie是不可避免的,在这就浅 显的总结一下,供新手参阅。个人感觉Cookie的使用和ASP.NET中的Session非常像,只不过Cookie是保存在客户端,而 Session是在服务器端,两者都以记录信息为目的,作为访问网站的凭据。本文仅仅是实践操作,不涉及理论知识。

实际操作之前简单的讲一下Cookie吧!

Cookie其实就是一些保存在客户端的小文件,为下次访问网站时保存一些信息,比如:是否登录。Cookie的最大优点就是使用简单,传递、管理、维护 都由浏览器完成;缺点是不安全、大小有限制、受浏览器安全性设置限制。刚刚提到Cookie实际上是一些小文件,这些文件肯定是用来存储信息的,那么这些 小文件在哪里呢?这要分情况而言,如果服务器建立的是非持久性Cookie,那么这些文件保存在浏览器的内存中,一旦完全关闭浏览器,Cookie便失效 了;如果服务器建立的是持久性Cookie,那么这些文件就被存放在:C:\你的用户名\Default\AppData\Roaming \Microsoft\Windows\Cookies,直接把正确的路径复制到资源管理器地址栏回车访问即可,不要手动寻找,那样是找不到的(即使显示 了隐藏文件,也找不到Cookies文件夹),这些Cookie文件以文本文档的形式存储在这里,所以安全性就可想而知了。在程序中,如果我们设置Cookie的有效时间,则此Cookie就是持久性Cookie,如果不设置,默认的就是非持久性Cookie。

需要注意的是:当我们访问一个页面时,如果有对应的Cookie,浏览器会自动传递给服务器端,服务器端返回到客户端的Cookie也由浏览器处理,完全不用我们操心;Cookie是可以覆盖的,如果重复写入同名的Cookie,那么将会覆盖之前的Cookie。

以下的代码展示了:“服务器端如何读取客户端的Cookie”、“服务器端向客户端写入非持久性Cookie”、“服务器端向客户端写入持久性Cookie”、“持久性Cookie和非持久性Cookie的区别”、“强制让有效的持久化Cookie失效”。有了上边的讲解,再加上代码中的详细注释,相信读者一看就会。直接复制以下代码到vs,可正常运行。

Web前台HTML代码:

<body>
<form id="frmUp" runat="server" method="post">
<div>
存入\读取Cookies:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
<asp:Button ID="btnSaveTemp" runat="server" Text="写入非持久化Cookies"
onclick="btnSaveTemp_Click" />
<asp:Button ID="btnSaveKeep" runat="server" Text="写入持久化Cookies"
onclick="btnSaveKeep_Click" />
<asp:Button ID="btnChangeCookie" runat="server" Text="强制持久化Cookies过期"
onclick="btnChangeCookie_Click" />
<asp:Button ID="btnRead" runat="server" Text="读取" onclick="btnRead_Click" />
</div>
</form>
</body>

Web后台C#代码:

//页面加载处理
protected void Page_Load(object sender, EventArgs e)
{
//加载时判断是否存在Cookies,存在则读取
HttpCookie login = Request.Cookies["Login"]; //获取客户端返回的Cookies中名称为Login的Cookie对象
if(login != null)
{
txtUserName.Text = login["userName"]; //读取Login中属性值
}
else
{
txtUserName.Text = "Cookies无效";
}
} //服务器端向客户端写入非持久化Cookie
protected void btnSaveTemp_Click(object sender, EventArgs e)
{
HttpCookie tempCookie = new HttpCookie("Login"); //创建一个HttpCookie实例,Cookies名称为Login,实例只是一个容器,真正使用的是Cookie名称
tempCookie["userName"] = "www.kpdown.com"; //向Login中添加一个userName属性,并赋值
Response.Cookies.Add(tempCookie); //把Cookies对象返回给客户端
} //服务器端向客户端写入持久化Cookie
protected void btnSaveKeep_Click(object sender, EventArgs e)
{
HttpCookie keepCookie = new HttpCookie("Login"); //创建一个HttpCookie实例,Cookies名称为Login,实例只是一个容器,真正使用的是Cookie名称
keepCookie["userName"] = "www.kpdown.com"; //向Login中添加一个userName属性,并赋值
keepCookie.Expires = DateTime.Now.AddDays(); //设定Cookies的有效期为两天
Response.Cookies.Add(keepCookie); //把Cookies对象返回给客户端
} //强制让有效的持久化Cookie失效
protected void btnChangeCookie_Click(object sender, EventArgs e)
{
HttpCookie changeCookie = new HttpCookie("Login"); //使名称为Login的Cookies失效,就把HttpCookie对象的Cookie名称写成Login,相当于用新Login覆盖了旧的Login,Cookie可以覆盖
changeCookie["userName"] = "www.kpdown.com"; //依然设置属性值,无法读取,证明Cookie已经失效
changeCookie.Expires = DateTime.Now.AddDays(-); //设定Cookies的有效期为无效时间即可让该Cookie失效
Response.Cookies.Add(changeCookie);
} //服务器端读取客户端的Cookie
protected void btnRead_Click(object sender, EventArgs e)
{
HttpCookie login = Request.Cookies["Login"]; //获取客户端返回的Cookies中名称为Login的Cookie对象
if (login != null)
{
txtUserName.Text = login["userName"]; //读取Login中属性值
}
else
{
txtUserName.Text = "Cookies无效";
}
}

ASP.NET中Cookie的使用的更多相关文章

  1. ASP.NET中Cookie跨域的问题及解决代码

    ASP.NET中Cookie跨域的问题及解决代码 http://www.liyumei.net.cn/post/share18.html Cookies揭秘  http://www.cnblogs.c ...

  2. 【转载】Asp.Net中Cookie对象的作用以及常见属性

    Cookie对象是服务器为用户访问存储的特定信息,这些信息一般存储在浏览器中,服务器可以从提交的数据中获取到相应的Cookie信息,Cookie的最大用途在于服务器对用户身份的确认,即票据认证,用户会 ...

  3. ASP.NET中cookie与Fiter实现简单登陆,AllowAnonymous匿名登陆

    向服务器发送cookie 在登陆的时候,我们可以可以通过下列代码,向服务器发送cookie,其中包括自己的账号信息(不涉及加密),用以后面判断访问者. HttpCookie cookie = new ...

  4. asp.net中Cookie的用法【转】

    比如建立一个名为aspcn,值为灌水小鱼的cookie HttpCookie cookie = new HttpCookie["aspcn"];cookie.Value = &qu ...

  5. 关于asp.net中cookie在调试过程中读写正常发布后乱码问题

    最近在做的项目发布后出现了乱码的问题,既然出现了乱码很大的可能性是跟编码有关系,所以首先的解决方案就是重新对cookie进行编码, 在写入的cookie的时候编码,在读取的时候解码 在写入cookie ...

  6. .NET跨平台之旅:ASP.NET Core从传统ASP.NET的Cookie中读取用户登录信息

    在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军——将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到 ...

  7. Asp.net 中ViewState,cookie,session,application,cache的比较

    Asp.net 中的状态管理维护包含ViewState,cookie,session,application,cache五种方式,以下是它们的一些比较: 1.存在于客户端还是服务端 客户端: view ...

  8. asp.net中缓存的使用介绍一

    asp.net中缓存的使用介绍一 介绍: 在我解释cache管理机制时,首先让我阐明下一个观念:IE下面的数据管理.每个人都会用不同的方法去解决如何在IE在管理数据.有的会提到用状态管理,有的提到的c ...

  9. asp.net中使用基于角色role的Forms验证

    http://www.cnblogs.com/yao/archive/2006/06/24/434783.html asp.net中使用基于角色role的Forms验证,大致经过几下四步:1.配置系统 ...

随机推荐

  1. asp.net中ScriptManager自带Ajax与jQuery事件冲突

    问题引诉:最近在使用asp.net自带的无刷新提交ScriptManager时,发现一个问题,就是和我自己用jQuery写的一些事件函数和局部刷新相冲突.通过在网上收索,发现很多人都遇到这个同样的问题 ...

  2. HttpModule HttpHandler HttpHandlerFactory 学习笔记

    1.HttpModule 最常见的是使用HttpModule来做页面权限控制. 在新建类库添加如下代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ...

  3. jstl中添加自定义的函数

    由于jstl中提供的函数未必能够满足我们的要求,而我们又希望能够像jstl提供的函数那样能够轻松方便使用,那么可以通过自定义函数补充jsltl函数.给jstl添加自定义函数需要以下步骤: 定义一个st ...

  4. Entity Framework Demo(一) 简单搭建环境

    Entity Framwork(实体框架,简称EF)是ORM(Object Relational Mapping,对象映射关系)的一个解决方案. EF允许项目将数据库的表映射为实体,并封装了操作方法, ...

  5. Customize the SharePoint 2013 search experience with a Content Enrichment web service

    Did you ever wish you had more control over how your content is indexed and presented as search resu ...

  6. 高效删除 ListItem

    The most efficient way to a lot of transaction in SharePoint is using of SPWeb.ProcessBatchData meth ...

  7. PHP程序漏洞产生的原因和防范方法

    滥用include 1.漏洞原因: Include是编写PHP网站中最常用的函数,并且支持相对路径.有很多PHP脚本直接把某输入变量作为Include的参数,造成任意引用脚本.绝对路径泄露等漏洞.看以 ...

  8. 样式优先级、margin

    margin:上 左 下 右:

  9. AndroidStudio1.4 manifest 中注册Activity时的错误提示解决办法

    问题截图如下: 解决办法截图如下: 1: File->setting->Editor->Language Injections到如下界面 2:双击右侧选中的Item进入编辑界面 3: ...

  10. JAVA-线程安全性

    线程安全性: 一个类是线程安全的是指在被多个线程访问时,类可以持续进行正确的行为.不用考虑这些线程运行时环境下的调度和交替.   编写正确的并发程序的关键在于对共享的,可变的状态进行访问管理. 解决方 ...