什么是cookies?如何使用cookies?

什么是cookies?

简单地说,cookies 就是浏览器储存在用户电脑上的一小段文本文件。cookies 是纯文本格式,不包含任何可执行的代码。Cookie的本质是一个键值对(由键值对 key=value构成,键值对之间由一个分号和一个空格隔开),当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息。cookies是一种最原始也最简单的客户端存储方式。一个 Web 页面或服务器告知浏览器按照一定规范来储存这些信息,并在随后的请求中将这些信息发送至服务器,Web 服务器就可以使用这些信息来识别不同的用户。大多数需要登录的网站在用户验证成功之后都会设置一个 cookie,只要这个 cookie 存在这个用户,他就可以就可以自由浏览这个网站的任意页面。

***当浏览器访问某个web服务器时写入客户机的cookies如图所示***在这里插入图片描述

如何使用cookies?

如何设置cookies

服务器端设置cookies
Cookie cookie = new Cookie("name","value");
cookie.setMaxAge(1);cookie 过期时间
cookie.setPath("/");//cookie 访问的路径
cookie.setDomain("/");//可以访问此cookie的域名
...//设置cookies其他属性
response.addCookie(cookie);

客户端(即通过js设置)设置cookies

//age=1是内容 后面的expires、domain、path是cookies相关属性的设置 每个健值对之间都用分号加空格隔开
document.cookie = "age=1; expires=Thu, 26 Feb 2116 11:50:25 GMT; domain=sankuai.com; path=/";
//当设置多个时用如下方式 不建议使用document.cookie = "age=1; name=tom; address=beijing;"(这种只设置进age=1,后面的设置不进去)
document.cookie = "name=tom;"
document.cookie = "address=beijing;"

如何取cookies

服务器端取cookies
//只能获取自己域里的cookie,无法获取其他域里的Cookie。(request带的cookies是根据客户端中保存的cookies的domain和path属性决定是否传递该cookies)
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
   String name = cookie.getName();//cookie 名字
   String path = cookie.getPath(); //cookie 访问的路径
   String value = cookie.getValue(); //cookie 值
   int maxAge = cookie.getMaxAge(); //cookie 过期时间
   String domain = cookie.getDomain();//可以访问此cookie的域名
   boolean secure = cookie.getSecure(); //是否只能通过https来传递此条cookie      

}
js取cookies

1.常用做法

// 函数中的参数为key key表示要获取的cookie键的名称。
function getCookie(key){
      if (document.cookie.length>0){
        c_start=document.cookie.indexOf(key+ "=");
        if (c_start!=-1){
          c_start=c_start + key.length+1;
          c_end=document.cookie.indexOf(";",c_start);
          if (c_end==-1){ 
              c_end=document.cookie.length;
          }
          return unescape(document.cookie.substring(c_start,c_end));
        }
     }
    return "";
}

2.还可用正则去匹配document.cookie获取目标值

//key为目标key value为目标值
var arr,reg=new RegExp("(^| )key=([^;]*)(;|$)");
arr=document.cookies.match(reg);
var value = unescape(arr[2])

cookie 编码

cookie其实是个字符串,但这个字符串中逗号、分号、空格被当做了特殊符号。所以当cookie的 key 和 value 中含有这3个特殊字符时,需要对其进行额外编码,一般会用escape进行编码,读取时用unescape进行解码;当然也可以用encodeURIComponent/decodeURIComponent或者encodeURI/decodeURI

  • 12
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值