【没有实践系列】关于cookie的学习笔记

1、前言

一直在扭螺丝,彻底没有碰过登陆这块,只能先从文章学习学习前端

2、几个点过一遍

1. http协议是无状态协议

咱们都知道,http协议是无状态协议,服务器不知道究竟是哪一个靓仔在请求它的接口,那这个特性会致使什么问题呢?
最多见的就是,好比我登陆了一个页面以后,紧接着请求一个接口,这个时候若是我不携带一些参数过去,那根据这个特性,接口是不知道我是那个已经登陆好的用户。算法

2. cookie,session,token

基于上面那个问题,后面就出现了两套解决方案,后端

(1)一套是cookie + session

在用户首先登陆输入完帐号密码以后,后端校验以后,在接口返回的时候后端会写一段代码在响应的时候后把一个sessionId存入cookie中,(注意这里是后端操做的,这个步骤不用前端参与),接下来后面的接口请求的时候都会自动带上cookie给后端(cookie的特性之一),后端就知道这个请求时哪一个登陆了的用户浏览器

缺点:
1.后端要存这个session的信息,有资源消耗;
2.要处理session在不一样服务器共享的问题;缓存

(2)一套是cookie+token

一旦登陆的用户多起来,这个session的消耗是巨大的,为了解决这个问题,后面就改为后端不保存这个session,那不保存了,要怎么校验这个身份呢?
那些靓仔想到一种叫token(令牌)的校验,原理是这样。
一样是用户登陆输入完帐号密码以后,一样是要返回一个id给客户端而且存起来,可是这个时候,后端再用一个算法加一个密钥对这个id作一个签名,并把这个签名跟数据一块儿保存在cookie,
接下来接口请求的时候同样带上cookie,此时后端校验的时候,他拿到数据后再用一样的算法和密钥再作一个签名,而后对比这个签名是否是跟你传过来的签名是同样的服务器

3. cookie的基本介绍

1. 什么是cookie

cookie是用来存储文本信息的文件,在硬盘空间能够找到(设置了过时时间的话),在浏览器能够看到,按F12,浏览器缓存那里就能够看到。cookie

2. cookie做用

主要用来保存会话状态,它的特性之一会跟随接口的调用自动带上(设置的时候配置),因此一旦cookie多了,也会有性能的问题。
固然也有人用它来作数据缓存,可是通常不推荐,由于这玩意有大小限制,单个不能超过4k,临时存数据仍是考虑localStorage这种session

3. cookie相关知识

(1)大小
单个限制4k,什么叫单个,看图
image.png
一条就是单个,并且总的大小也是有一个限制,不一样浏览器好像不一样,好比Firefox每一个域名cookie限制为50个。性能

(2)操做(这里指前端)学习

  • 建立一个cookie
document.cookie="userId=828999";
  • 建立一个cookie,多个键值对的话,用分号分割
document.cookie="userId=828;username=lll";
  • 重写,保证name同样
document.cookie="userId=999";
  • 删除,设置expires属性,属性值为过去的时间
//获取当前时间
var  date=new  Date();

//将date设置为过去的时间,减了1毫秒就确定是过去的时间
date.setTime(date.getTime() - 1);

document.cookie="userId=999;expires="+date.toGMTString();
  • 读取cookie,这个读取的值是所有的cookie,读出来的值是一串很长的字符串,须要本身处理切割
document.cookie

image.png

相关文章
相关标签/搜索