zoukankan      html  css  js  c++  java
  • cookie 小测试

        说起来丢人做了两年的开发,基本上cookie 用的很少 (悲剧啊   悲剧)今天闲着蛋疼,特意回顾了一下cookie  的使用

        回顾定义,cookie 是保存在浏览器的文本段。也就是说,它是不安全的,一般情况下,只存储一些非重要信息(或者也可以加密存储些重要的从数据库中读的信息,避免再次从数据库中读)。紧接着,回顾用法   cookie 可以存储最多4096字节    大多数浏览器设定每个站点最多20个cookie。其次, 浏览器会将cookie  写在 header发送给服务器,但是它吧不会将cookie 的expires发送过去。

        ok,做了一个小例子,来看下效果

    局部代码:

    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Label ID="lb_cookieShow" runat="server"></asp:Label><br />
            <asp:Button ID="btn_addCookie" runat="server" Text = "创建一个cookie" 
                onclick="btn_addCookie_Click" /><br />
            <asp:Button ID="btn_delCookie" runat="server" Text = "删除一个cookie" 
                onclick="btn_delCookie_Click" /><br />
            <asp:Button ID="btn_update" runat="server" Text = "刷新" 
                onclick="btn_update_Click"  /><br />
        </div>
        </form>
    </body>
     
    .cs 代码
    public partial class CookieTest : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (IsPostBack == false)
                {
                    ShowMessage();
                }
            }
     
            private void ShowMessage()
            {
                if (Request.Cookies["cookieTest"] == null)
                {
                    this.lb_cookieShow.Text = "cookie已过期或者不存在";
                }
                else
                {
                    var cookie = Request.Cookies["cookieTest"];
                    this.lb_cookieShow.Text = string.Format("{0},{1},{2},{3}", 
                             cookie.Domain, cookie.Expires, cookie.Value, cookie.Path);
                }
            }
     
            protected void btn_addCookie_Click(object sender, EventArgs e)
            {
                HttpCookie cookie = new HttpCookie("cookieTest");
                cookie.Value = "我是一个cookie";
                cookie.Expires = System.DateTime.Now.AddDays(1);
                this.Response.Cookies.Add(cookie);
                ShowMessage();
            }
     
            protected void btn_delCookie_Click(object sender, EventArgs e)
            {
                if (Request.Cookies["cookieTest"] != null)
                {
                    var cookie = Request.Cookies["cookieTest"];
                    cookie.Expires = System.DateTime.Now.AddDays(-1);
                    Response.Cookies.Add(cookie);
     
                    ShowMessage();
                }
       
            }
     
            protected void btn_update_Click(object sender, EventArgs e)
            {
                ShowMessage();
            }
        }

    首先,读取页面,显示如下信息

    image

    同时,插件显示  无cookie

    image

    当点  "创建一个cookie” 的时候,通过Response.cookies.add(cookie) 将cookie放到response 发给客户端。

    此处有个很有意思的地方:当我将cookie 写入response的时候,如果再访问Request.Cookies[“CustomCookie”]的时候,它貌似会先在response 里找找看有没有这个cookie.如果有,直接去读response 里的cookie    .

    image

    注意,此处的expires 读出来是因为此时读的不是request 而是response 了

    image

    同理,删除cookie 也是

    image

    这里又有个值得说明的地方:因为cookie是保存在浏览器上的,所以我们不能直接删除它,只能告诉浏览器删除它,而在服务器端让浏览器删除它的唯一办法就是:将其expries 置为比当前时间更早的时间(这样浏览器就会因cookie 过期而删掉它)

  • 相关阅读:
    SQL语句
    POJ2586——Y2K Accounting Bug
    POJ1328——Radar Installation
    POJ2965——The Pilots Brothers' refrigerator
    SDIBT2666——逆波兰表达式求值
    POJ1753——Flip Game
    Python全栈开发-有趣的小程序
    跑马灯效果、jquery封装、$.fn和$.extend方法使用
    js 实现浏览器全屏效果
    百度地图点聚合功能如何提高性能
  • 原文地址:https://www.cnblogs.com/jicheng1014/p/1557276.html
Copyright © 2011-2022 走看看