热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

JavaScript数据存储Cookie篇

这篇文章主要为大家介绍了JavaScript数据存储Cookie篇,感兴趣的朋友可以参考一下

1.什么是COOKIE?
    答:COOKIE是用于在客户端存储会话信息的。
2.COOKIE的组成部分?
    ①名称:一个唯一确定COOKIE 的名称。建议区分大小写。COOKIE 的名称必须是经过URL 编码的。
    ②值:储存在COOKIE 中的字符串值。值必须被URL 编码。
    ③域:COOKIE 对于哪个域是有效的。所有向该域发送的请求中都会包含这个COOKIE 信息。这个值可以包含子域(subdomain,如www.wrox.com),也可以不包含它(如.wrox.com,则对于wrox.com的所有子域都有效)。如果没有明确设定,那么这个域会被认作来自设置COOKIE 的那个域。
    ④路径:对于指定域中的那个路径,应该向服务器发送COOKIE。例如,你可以指定COOKIE 只有从http://www.wrox.com/books/ 中才能访问,那么http://www.wrox.com 的页面就不会发送COOKIE 信息,即使请求都是来自同一个域的。
    ⑤失效时间:表示COOKIE 何时应该被删除的时间戳。默认情况下,浏览器会话结束时即将所有COOKIE 删除;不过也可以自己设置删除时间。这个值是个GMT 格式的日期(Wdy, DD-Mon-YYYY HH:MM:SS GMT),用于指定应该删除COOKIE 的准确时间。因此,COOKIE
    可在浏览器关闭后依然保存在用户的机器上。如果你设置的失效日期是个以前的时间,则COOKIE 会被立刻删除。
    ⑥安全标志:指定后,COOKIE 只有在使用SSL 连接的时候才发送到服务器。例如,COOKIE 信息只能发送给https://www.wrox.com,而http://www.wrox.com 的请求则不能发送COOKIE。
3.列举一个COOKIE的例子?
    以下是一个完整的COOKIE的例子,我们将把它分解开来:
    Set-COOKIE: name=value; expires=Mon, 22-Jan-07 07:10:24 GMT; domain=.wrox.com; path=/; secure
    ①名称: name字符串表示
    ②值:value字符串表示
    ③过期时间:Mon, 22-Jan-07 07:10:24 GMT
    ④域名:.wrox.com
    ⑤路径:当前目录/
    ⑥安全标志:secure
4.如何操作COOKIE?
 

  var COOKIEUtil = {
    // 设置COOKIE
    set : function (name, value, expires, domain, path, secure) {
      var COOKIEText = "";
      COOKIEText += encodeURIComponent(name) + "=" + encodeURIComponent(value);
      if (expires instanceof Date) {
        COOKIEText += "; expires=" + expires.toGMTString();
      }
      if (path) {
        COOKIEText += "; path=" + path;
      }
      if (domain) {
        COOKIEText += "; domain=" + domain;
      }
      if (secure) {
        COOKIEText += "; secure";
      }
      document.COOKIE = COOKIEText;
    },
    // name=value; expires=expiration_time; path=domain_path; domain=domain_name; secure
    // 获取COOKIE
    get : function (name) {
      var COOKIEName = encodeURIComponent(name) + "=",
        COOKIEStart = document.COOKIE.indexOf(COOKIEName),
        COOKIEValue = "";
      if (COOKIEStart > -1) {
        var COOKIEEnd = document.COOKIE.indexOf (";", COOKIEStart);
        if (COOKIEEnd == -1) {
          COOKIEEnd = document.COOKIE.length;
        }
        COOKIEValue = decodeURIComponent(document.COOKIE.substring(COOKIEStart + COOKIEName.length, COOKIEEnd));
      }
      return COOKIEValue; 
    },
    // 删除COOKIE
    unset : function (name, domain, path, secure) {
      this.set(name, "", Date(0), domain, path, secure);
    }
  };
  // 测试
  COOKIEUtil.set("name", "zhang");
  var name = COOKIEUtil.get("name");
  alert(name);  // zhang
  COOKIEUtil.unset("name");
  alert(COOKIEUtil.get("name")); // 空

5.COOKIE的限制
    ①存储数据数量有限
    ②保了储存在COOKIE 中的信息只能让批准的接受者访问,而无法被其他域访问
    ③安全性有限
6.针对COOKIE数据存储少量的问题,我们提出了子COOKIE的概念。即在每条COOKIE的值中存储多条数据,用"&"隔开。

  var SubCOOKIEUtil = {
    /** 设置一条完整的COOKIE
    *  param name : 表示COOKIE的名称,必填
    *  param subCOOKIEs : 表示COOKIE的值,为一个对象,必填
    *  param expires : 表示COOKIE的过期时间,可以不填
    *  param domain : 表示COOKIE的域名,可以不填
    *  param path : 表示COOKIE的路径,可以不填
    *  param secure : 表示COOKIE的安全标志,可以不填
    *  eg : SubCOOKIEUtil.setAll("info", { name : "zhang", age : 23});
    **/
    setAll : function (name, subCOOKIEs, expires, domain, path, secure) {
      var COOKIEText = "", subName, COOKIEParts = [];
      COOKIEText += encodeURIComponent(name) + "=";
      for(subName in subCOOKIEs) {
        COOKIEParts.push(encodeURIComponent(subName) + "=" + encodeURIComponent(subCOOKIEs[subName]));
      }
      if (COOKIEParts.length > 0) {
        COOKIEText += COOKIEParts.join("&");
        if (expires instanceof Date) {
          COOKIEText += "; expires=" + expires.toGMTString();
        }
        if (path) {
          COOKIEText += "; path=" + path;
        }
        if (domain) {
          COOKIEText += "; domain=" + domain;
        }
        if (secure) {
          COOKIEText += "; secure";
        }
      } else {
        COOKIEText += "; expires=" + Date(0).toGMTString();
      }
      document.COOKIE = COOKIEText;
    },
    /** 设置一条子COOKIE
    *  param name : 表示COOKIE的名称,必填
    *  param subName : 表示子COOKIE的名称,必填
    *  param value : 表示子COOKIE的值,必填
    *  param expires : 表示COOKIE的过期时间,可以不填
    *  param domain : 表示COOKIE的域名,可以不填
    *  param path : 表示COOKIE的路径,可以不填
    *  param secure : 表示COOKIE的安全标志,可以不填
    *  eg : SubCOOKIEUtil.set("info", "sex", "boy");
    **/
    set : function (name, subName, value, expires, domain, path, secure) {
      var COOKIEs = this.getAll(name) || {};
      COOKIEs[subName] = value;
      this.setAll(name, COOKIEs, expires, domain, path, secure);
    },
    /** 读取一条完整COOKIE
    *  param name : 表示COOKIE的名称,必填
    *  return : 一个COOKIE对象
    *  eg : SubCOOKIEUtil.getAll("info");
    **/
    getAll : function (name) {
      var COOKIEName = encodeURIComponent(name) + "=",
        COOKIEStart = document.COOKIE.indexOf(COOKIEName),
        COOKIEValue = "", i, len, subCOOKIEs, parts, result = {};
      if (COOKIEStart > -1) {
        var COOKIEEnd = document.COOKIE.indexOf (";", COOKIEStart);
        if (COOKIEEnd == -1) {
          COOKIEEnd = document.COOKIE.length;
        }
        COOKIEValue = decodeURIComponent(document.COOKIE.substring(COOKIEStart + COOKIEName.length, COOKIEEnd));
        if (COOKIEValue.length > 0) {
          subCOOKIEs = COOKIEValue.split("&");
          for (i = 0, len = subCOOKIEs.length; i 

以上就是本文的全部内容,希望对大家的学习有所帮助。


推荐阅读
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文详细介绍了云服务器API接口的概念和作用,以及如何使用API接口管理云上资源和开发应用程序。通过创建实例API、调整实例配置API、关闭实例API和退还实例API等功能,可以实现云服务器的创建、配置修改和销毁等操作。对于想要学习云服务器API接口的人来说,本文提供了详细的入门指南和使用方法。如果想进一步了解相关知识或阅读更多相关文章,请关注编程笔记行业资讯频道。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 信息安全等级保护是指对国家秘密信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的信息安全产品实 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 打开文件管理器_【教程】模组管理器3.1食用指南
    文编:byakko最近有部分小伙伴反应还不会使用unity模组管理器,现在我就给大家讲一下unity模组管理器——从下载到使用。完整视频版以下是无WiF ... [详细]
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
author-avatar
zhangmy0815522
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有