cookie的那些事

作者: tiancai啊呆 | 来源:发表于2018-01-20 17:09 被阅读36次
cookie简介

cookie 是服务器保存在浏览器的一小段文本信息,浏览器每次向服务器发出请求,就会自动附上这段信息。

cookie详解
  • cookie的属性
    一条cookie主要保存了五个方面的信息,分别是cookie的名字,cookie的值,到期时间,所属域名(默认是当前域名),生效路径(默认是当前网址)。
  • cookie的长度
    所有 cookie 的累加长度限制为4KB。超过这个长度的 Cookie,将被忽略,不会被设置。
  • cookie的通信
    浏览器每次请求时,在请求头中通过Cookie字段将cookie发送给服务器。
    服务器在响应头中,通过Set-Cookie字段将cookie发给浏览器。如果服务器加上了HttpOnly属性,则这个 cookie 无法被 JavaScript 读取。
    不同的是浏览器向服务器发送 cookie 的时候,是使用一行将所有 cookie 全部发送,而服务器告诉浏览器需要储存 cookie 的时候,则是分行指定。
  • cookie的获取
    浏览器通过document.cookie返回当前网页的 cookie(返回的是分号分隔的所有 cookie)。所以必须手动还原,才能取出每一个 cookie 的值。
  • cookie的设置
    document.cookie属性是可写的,可以通过它为当前网站添加 cookie。但是,document.cookie一次只能写入一个 cookie,而且写入并不是覆盖,而是添加。
    写入格式:value;expires=date;domain=domain;path=path;secure
    value属性是必需的,它是一个键值对,用于指定cookie的值(对分号、逗号和空格进行转义)。
    expires属性用于指定 cookie 过期时间。它的格式采用Date.toUTCString()的格式。
    domain属性指定 cookie 所在的域名。如果未指定,默认为设定该Cookie的域名。所指定的域名必须是当前发送Cookie的域名的一部分。
    path属性用来指定路径,必须是绝对路径。如果未指定,默认为请求该 Cookie 的网页路径。path属性生效的前提是domain属性匹配。
    secure属性用来指定cookie只能在加密协议HTTPS下发送到服务器,只是一个开关,不需要指定值。
    max-age属性用来指定cookie有效期,单位为秒。
    HttpOnly属性用于设置该cookie不能被JavaScript读取。
    以上可选属性可以同时设置一个或多个,也没有次序的要求。另外,这些可选属性只能用来设置 cookie。一旦设置完成,就没有办法读取这些可选属性的值。

如果想改变一个早先设置的Cookie,必须同时满足四个条件:cookie的key、domain、path和secure都匹配。

  • cookie的删除
    删除一个cookie唯一方法是使其过期。
cookie封装
//设置cookie
function setCookie(key,value,expires,domain,path) {
  var encodeKey = encodeURIComponent(key);
  var encodeValue = encodeURIComponent(value);
  var keyExpires = expires.toUTCString();
  document.cookie = encodeKey + '=' + encodeValue + ';expires=' + keyExpires + ';domain=' + domain + ';path=' + path;
}
//获取cookie
function getCookie(key){
  var encodeKey = encodeURIComponent(key);
  var allCookie = document.cookie.split(';');
  var cookie,len = allCookie.length;
  for (var i = 0; i < len; i++) {
     cookie = allCookie[i].split('=');
     if (encodeKey == cookie[0]) {
         return cookie[1];
     }   
   }
   return '';
}
//删除cookie
function delCookie(key,domain,path){
  var encodeKey = encodeURIComponent(key);
  var expires = new Date(0);
  document.cookie = encodeKey + '=' + ';expires=' + expires.toUTCString() + ';domain=' + domain + ';path=' + path;
}

最后推荐一下自己的通用函数库

相关文章

  • cookie那些事

    cookie那些事 本文面向对cookie有基本了解的读者,小白出门左转 设置cookie (HTTP 响应头) ...

  • cookie的那些事

    cookie简介 cookie 是服务器保存在浏览器的一小段文本信息,浏览器每次向服务器发出请求,就会自动附上这段...

  • 关于ios的Cookie那些事

    关于ios的cookie,可能很多人都并不太了解,因为ios内部已经帮我们封装好了,只要是NSURLRequest...

  • cookie那些事(1)基础

    cookie是什么呢? 不不不,我说的cookie是这个 下面就详细介绍下这个web世界中不可缺少的一个元素 1....

  • CookiePolicy 原理解析

    CookiePolicy策略可以精确控制程序接收那些cookie,拒绝接受那些cookie。 CookiePoli...

  • iOS 关于token、cookie的那些事

    关于 token服务器如何判断当前用户是否登录?短连接(http:)使用token 机制来验证用户安全性,相信大多...

  • 关于HTTP的那些事和cookie

    1.0 HTTP协议 关于协议对于应用层开发人员,接触最多的网络协议通常都是传输层的TCP,为什么这么说,因为再往...

  • 说说WebView那些事(header,cookie,注入js

    前言 昨天路过公司外面花园时候,不知觉腊梅已经开花了,才发觉春天来了。来城市生活这几年,完全忘记了时令的交替,只知...

  • 好程序员web前端培训细解cookie那些事

    好程序员web前端培训细解cookie那些事,在互联网时代,IT行业飞速发展,带动了web前端开发行业的兴趣。由于...

  • 记录用户的上次访问时间----Cookie

    Cookie的创建:Cookie cookie = New Cookie(Cookie name,Cookie v...

网友评论

    本文标题:cookie的那些事

    本文链接:https://www.haomeiwen.com/subject/grhtaxtx.html