COOKIE基础及应用
什么是COOKIE
1、记录用户信息, 通过 Cookie 来确定您是否已经登录过
2、比如你访问了购物网站,cookies记录了你的访问行为,广告主就能够根据你的访问行为,向你推送购物类的广告
COOKIE的特性
–同一个网站中,所有的页面共享同一套cookie
–数量,大小有限(单个不超过4k)
–可以设置过期时间
–每次会携带在请求头header中
–cookie在浏览器和服务器之间传递,而localStorage存储在客户端
–cookie不能跨域,可以用document.cookie设置和获取cookie的值

//设置cookie

function setCookie(key,value,day){
    var cookie=key+'='+encodeURIComponent(value);
    if(day>0){
         var date=new Date();
         date.setDate(date.getDate()+day);
         cookie+=';expires='+date;
    }
    document.cookie=cookie;
}

//获取cookie值

function getCookie(key){
	if(document.cookie.indexOf(key)<0){ return; }
	var cookies=document.cookie.split(";");
	for(var i=0; i<cookies.length; i++){
		var temp=cookies[i].split("=");
		if(temp[0].replace(/\s/g,'')==key){
			return decodeURIComponent(temp[1]);
		}
      }
}

//删除cookie

function deleteCookie(key){
	setCookie(user_id,'',-1);   时间设置为已经过期的时间,系统自然会删除
}

//登录成功后记住用户信息 下次自动登录

function doLogin () {
     //获取user信息
     setCookie("user_id",user.Id,7);
}

//退出登录后清除用户信息

function loginOut(){
    deleteCookie("user_id");
}

session和cookie的联系和区别?
在这里插入图片描述
1.用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的Session,并把唯一标识信息SessionID返回给浏览器,浏览器接收到服务器返回的SessionID信息后,会将此信息存入cookie中(cookie是服务器response->Set-Cookie发送浏览器并保存在浏览器的一小块数据)。
2.当用户第二次访问服务器的时候,请求会自动判断请求头里是否有cookie信息,如果存在,服务器会从cookie中获取SessionID,根据SessionID检索对应的Session信息。用户就可以使用例如支付、加购物车等行为,如果没有找到说明该用户没有登录或登录失效。

区别:
1.作用范围不同,Cookie保存在客户端(浏览器)不安全,Session保存在服务器端,相对安全
2.有效期不同,Cookie可设置为长时间保持,比如我们经常使用的默认登录功能,Session一般失效时间较短,客户端关闭或者Session超时就会失效。
3.存储大小不同,单个Cookie保存的数据不超过4k,Session存储数据高于Cookie。

注意:
Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,客户端可以存放在localStorage.token,以后客户端只需在请求头带上这个Token前来请求数据即可。

最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。比SessionID更安全一点。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐