zoukankan      html  css  js  c++  java
  • js和.net操作Cookie遇到的问题

    Cookie初探
    1.我理解中的Cookie
    1.1.Cookie存储位置是客户端的
    1.2.Cookie存储数据,数据大小也是有限制的

    2.Cookie的用法
    2.1.js对Cookie的操作(网上很多我就不自己总结了)

    var date = new Date();
    date.setTime(date.getTime() - 10000);//过期时间--这个的作用:添加(过期时间大于当前时间)和删除(过期时间小于当前时间)
    document.cookie = name + "=Cookie内容; expires=" + date.toGMTString();
    

    读取Cookie

    var l_varCookie=document.cookie;
    

    2.2.C#对Cookie的操作

    if (Request.Cookies["userInfo"] != null)
    {
    Response.Write(Server.HtmlEncode(Request.Cookies["userInfo"].Value));
    }
    else {
    1.设置的Cookie方法一
    Response.Cookies["userInfo"].Value = "UserInfo";
    Response.Cookies["userInfo"].Path = "/WebSite1/CookieDemo/";
    }
    2.设置的Cookie方法二
    System.Web.HttpCookie newcookie = new HttpCookie("userInfo");
    newcookie.Value = "";
    newcookie.Expires = DateTime.Now.AddDays(-1);
    Response.AppendCookie(newcookie);
    Response.Redirect("default.aspx");
    
    创建带有子键的cookies:
    System.Web.HttpCookie newcookie=new HttpCookie("user");
    newcookie.Values["username"]="zxf";
    newcookie.Values["password"]="111";
    newcookie.Expires=DateTime.Now.AddDays(1);
    Response.AppendCookie(newcookie);
    
    有子键读取:
    if(Request.Cookies["user"]!=null)
    {
    Response.Write(Server.HtmlEncode(Request.Cookies["user"]["username"].Value));
    Response.Write(Server.HtmlEncode(Request.Cookies["user"]["password"].Value));
    }
    

    看起来好简单,但是我在开发中有一个这样的需求:

    1.1.母版页面加载时判断Cookie是否有值,没有的话则赋值
    1.2.点击一个a标签通过js清除cookie,并跳转页面
    需求很简单实用上面调查的就可以解决了,但是在做的过程中,使用js清除Cookie后,母版页面加载会判断Cookie是否有值,每次都是有值
    这样问题就来了。
    1.js的Cookie路径是当前页面所在的路径,而.net的Cookie的路径是当前服务器的根目录,也就是说js操作的和我母版页后台加载时处理的Cookie不是不是同一个
    解决方法:js和.net操作Cookie的路径设置一致
    设置Cookie的path属性,代码如下
    js:
    document.cookie = name + "=; expires=" + date.toGMTString() + "; path=/WebSite1/CookieDemo/";
    .net:
    Response.Cookies["userInfo"].Value = "UserInfo";
    Response.Cookies["userInfo"].Path = "/WebSite1/CookieDemo/";
    实际说了这么多就是为了解决一个很小的问题:js和.net后台共用一个Cookie。
    当然还有很多不懂的地方,这个Path只是Cookie的一个属性,还有一个【域】这个属性没有研究

     DEMO:

    http://files.cnblogs.com/files/WarBlog/CookieDemo.rar
    
  • 相关阅读:
    ubuntu 12.04 LTS 如何使用更快的更新源
    虚拟机安装ubuntu问题解决办法
    云计算
    Hadoop多节点集群安装配置
    Apache Lucene学习笔记
    Struts2运行流程
    数据结构与算法分析 java语音描述(引论)
    事物与分布式事物原理实践
    Get,Post请求中文乱码问题有效解决方法
    Vue2.5开发去哪儿网App 第四章笔记 下
  • 原文地址:https://www.cnblogs.com/WarBlog/p/5865183.html
Copyright © 2011-2022 走看看