zoukankan      html  css  js  c++  java
  • Cookie

    一、cookie

      (一)什么是cookie:

        1、就是会话跟踪技术,存放在客户端浏览器中的一段文本信息

        2、会话:从浏览网站开始到结束的这个过程称为一次会话,浏览器关闭,表示会话结束

        3、会话跟踪技术:客户端向服务器请求数据,多次请求时,实现数据共享的过程,称为会话跟踪技术

        

      (二)cookie的存取

        1、document.cookie 取cookie

        2、document.cookie = "键 = 值";

      (三)字符串和对象类型的转换

        1、将字符串转成对象:JSON.parse();

        2、将对象转成字符串:JSON.stringify();

        拓展:encodeURIComponent();把字符串作为 URI 组件进行编码

           decodeURIComponent();编码的 URI 进行解码

      (四)cookie的生存期

        1、生存期:cookie数据在浏览器中保存的时间

          如果不设置生存期,浏览器关闭,表示会话结束,cookie数据自动删除

          如果设置生存期,浏览器关闭,cookie数据会保存在浏览器上,生存期内cookie不会自动删除

        2、如何设置生存期(需要expires参数)

          document.cookie = "键 = 值;expires = 过期时间(也就是date)" 过期时间格式:要求标准时间格式;

        3、如何设置根目录

          path = /;

      (五)删除cookie

        1、将某个键的值,设置为""或将生存期设置为-1

      (六)使用cookie需要注意

        1、cookie存储的数据安全性低

        2、cookie存储数据量小,最多存4KB数据,一般不超过50个cookie

        3、cookie不能跨文件访问,在a目录下存储的cookie在b目录下不能访问到a中的cookie数据

        4、cookie参数:必须有一个键值对

      (七)如何封装cookie

        

    function setCookie(key,value,newDate){
    	var txtCookie = encodeURIComponent(key) + "=" +encodeURIComponent(value);
    	if(newDate){
    		var date = new Date();
    		date.setDate(date.getDate() + newDate);
    		document.cookie = txtCookie + ";expires=" + date + ";path=/"; 
    	}else{
    		document.cookie = txtCookie + "=" + value + ";path=/";
    	}	
    }//设置cookie
    
    function getCookie(key){
    	var str = document.cookie;
    	if(str){
    		var arr = str.split("; ");
    		for(var i = 0,len = arr.length;i < len;i++){
    			var newArr = arr[i].split("=");
    			if(newArr[0] === encodeURIComponent(key)){
    				return decodeURIComponent(newArr[1]);
    			}
    		}
    		return "";
    	}
    	return "";
    }//获取cookie
    
    function removeCookie(key){
    	setCookie(key,'',-1);
    }//删除cookie
    

    二、浏览器允许每个域名所包含的cookie数:

      Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie

      Firefox每个域名cookie限制为50个

      Opera每个域名cookie限制为30个

      Safari/WebKit貌似没有cookie限制;但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。

      注:“每个域名cookie限制为20个”将不再正确!

    三、当很多的cookie被设置,浏览器如何去响应。

      除Safari(可以设置全部cookie,不管数量多少),有两个方法:

      最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。Internet Explorer和Opera使用此方法。

      Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:在Firefox中不要超过Cookie限制)。

    四、不同浏览器间cookie总大小也不同:

      Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。

      Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。

      Internet Explorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。

          注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。

  • 相关阅读:
    hadoop常用命令详细解释
    2019-05-20 Sublime Text 编辑
    2019-05-20 什么是分布式系统、分布式锁
    2019-05-19 centos7下删掉一个目录下所有的文件
    2019-05-17 ABRT has detected 1 problem(s). For more info run: abrt-cli list --since 1558053651
    2019-05-17 java.net.BindException: Address already in use: JVM_Bind <null>:8083
    2019-05-16mysql忘记密码怎么办
    2019-05-16查看MySQL版本sql语句
    2019-05-15 cenots7动态IP地址改为静态
    2019-05-14 MySQL通过dos命令操作数据库
  • 原文地址:https://www.cnblogs.com/liufuyuan/p/10405301.html
Copyright © 2011-2022 走看看