学习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代码:

  1. <body>
  2. <form id="frmUp" runat="server" method="post">
  3. <div>
  4. 存入\读取Cookies:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
  5. <asp:Button ID="btnSaveTemp" runat="server" Text="写入非持久化Cookies"
  6. onclick="btnSaveTemp_Click" />
  7. <asp:Button ID="btnSaveKeep" runat="server" Text="写入持久化Cookies"
  8. onclick="btnSaveKeep_Click" />
  9. <asp:Button ID="btnChangeCookie" runat="server" Text="强制持久化Cookies过期"
  10. onclick="btnChangeCookie_Click" />
  11. <asp:Button ID="btnRead" runat="server" Text="读取" onclick="btnRead_Click" />
  12. </div>
  13. </form>
  14. </body>

Web后台C#代码:

  1. //页面加载处理
  2. protected void Page_Load(object sender, EventArgs e)
  3. {
  4. //加载时判断是否存在Cookies,存在则读取
  5. HttpCookie login = Request.Cookies["Login"]; //获取客户端返回的Cookies中名称为Login的Cookie对象
  6. if(login != null)
  7. {
  8. txtUserName.Text = login["userName"]; //读取Login中属性值
  9. }
  10. else
  11. {
  12. txtUserName.Text = "Cookies无效";
  13. }
  14. }
  15.  
  16. //服务器端向客户端写入非持久化Cookie
  17. protected void btnSaveTemp_Click(object sender, EventArgs e)
  18. {
  19. HttpCookie tempCookie = new HttpCookie("Login"); //创建一个HttpCookie实例,Cookies名称为Login,实例只是一个容器,真正使用的是Cookie名称
  20. tempCookie["userName"] = "www.kpdown.com"; //向Login中添加一个userName属性,并赋值
  21. Response.Cookies.Add(tempCookie); //把Cookies对象返回给客户端
  22. }
  23.  
  24. //服务器端向客户端写入持久化Cookie
  25. protected void btnSaveKeep_Click(object sender, EventArgs e)
  26. {
  27. HttpCookie keepCookie = new HttpCookie("Login"); //创建一个HttpCookie实例,Cookies名称为Login,实例只是一个容器,真正使用的是Cookie名称
  28. keepCookie["userName"] = "www.kpdown.com"; //向Login中添加一个userName属性,并赋值
  29. keepCookie.Expires = DateTime.Now.AddDays(); //设定Cookies的有效期为两天
  30. Response.Cookies.Add(keepCookie); //把Cookies对象返回给客户端
  31. }
  32.  
  33. //强制让有效的持久化Cookie失效
  34. protected void btnChangeCookie_Click(object sender, EventArgs e)
  35. {
  36. HttpCookie changeCookie = new HttpCookie("Login"); //使名称为Login的Cookies失效,就把HttpCookie对象的Cookie名称写成Login,相当于用新Login覆盖了旧的Login,Cookie可以覆盖
  37. changeCookie["userName"] = "www.kpdown.com"; //依然设置属性值,无法读取,证明Cookie已经失效
  38. changeCookie.Expires = DateTime.Now.AddDays(-); //设定Cookies的有效期为无效时间即可让该Cookie失效
  39. Response.Cookies.Add(changeCookie);
  40. }
  41.  
  42. //服务器端读取客户端的Cookie
  43. protected void btnRead_Click(object sender, EventArgs e)
  44. {
  45. HttpCookie login = Request.Cookies["Login"]; //获取客户端返回的Cookies中名称为Login的Cookie对象
  46. if (login != null)
  47. {
  48. txtUserName.Text = login["userName"]; //读取Login中属性值
  49. }
  50. else
  51. {
  52. txtUserName.Text = "Cookies无效";
  53. }
  54. }

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. ViewPager的用法

    ViewPager 1.布局文件中的配置 ViewPager的路径 方法:在源码文件中输入ViewPager,按下alt+/,上面就会出来viewPager的包路径 viewPager的配置很简单,前 ...

  2. hadoop错误FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOException There appears to be a gap in the edit log

    错误: FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOExcep ...

  3. js验证邮箱

    <html>    <head>    <script>   function verifyAddress(obj)    {    var email = obj ...

  4. MVVM架构的一次实践,重写iOS头条客户端

    前言: 一个iOS头条APP,使用MVVM架构实现,代码中有注释,封装了AFN网络请求,解媾代码,使用起来非常方便.用最经典的TableView展示,后续不断更新,喜欢就star或fork一下,有问题 ...

  5. Android 开发之动画详解

    一.动画类型 Android的animation由四种类型组成:alpha.scale.translate.rotate XML配置文件中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画 ...

  6. Linux下搭建Oracle11g RAC(2)----配置DNS服务器,确认SCAN IP可以被解析

    从Oracle 11gR2开始,引入SCAN(Single Client Access Name) IP的概念,相当于在客户端和数据库之间增加一层虚拟的网络服务层,即是SCAN IP和SCAP IP  ...

  7. ci 中使用 pdo 连接 mysql

    ci 版本为 3.0.6 config/database.php 文件内容如下 $active_group = 'default'; $query_builder = TRUE; $db['defau ...

  8. 浅谈href 和 src的区别

    href 表示超文本引用(hypertext reference),在 link.a 等元素上.src 表示来源地址,在 img.script.iframe 等元素上.src 的内容,是页面必不可少的 ...

  9. DataDictionaryTool 一款生成数据库字典工具支持mysql和oracle

    因为常常查看mysql数据结构,频繁操作.很不爽,于是想把数据表制作成数据字典,于是网上搜的一款工具 DataDictionaryTool ,最终制作成功,分享给大家! 1,此工具需要安装jre ,简 ...

  10. 关于 ORA - 01861 文字与格式字符串不匹配问题(oracle存储过程)

    一般问题(TO_DATE 和 TO_CHAR 两种格式互换)比如: 只要转化下格式就OK ,这里就不详细解释这两种格式的用法了! 今天把之前做好的模块拿到当地实习,不管怎么测 ,连续测试了好几个存储过 ...