Cookie、Session和Token-创新互联
目录
创新互联是专业的威信网站建设公司,威信接单;提供成都网站设计、成都网站建设、外贸网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行威信网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!前言
Cookie
Session
有了 Cookie 为什么还要 Session?
Cookie和Session的区别
Token
前言
HTTP 是一种无状态协议。因为HTTP底层是TCP,是一个长连接,这个过程中是保持连接状态的。在这个连接过程中,客户端可以向服务器发送多次请求,各个请求之间没有什么联系。每次服务器接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录。
Cookie客户端请求服务器时,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie并在响应中带有Set-Cookie报头。而客户端浏览器会把Cookie保存起来。当浏览器再请求服务器时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器通过检查该Cookie来获取用户状态。
- Session Cookies:会话 Cookie 存储在内存中,永远不会写入磁盘,当浏览器关闭时,此后 Cookie 将永久丢失。
- Persistent Cookies:Cookie 包含有效期,则将其视为持久性 Cookie。在到期指定的日期,Cookie 将从磁盘中删除。
Session使用 cookie 时存在的问题:
- 不安全,不要存储敏感数据,比如用户密码,账户余额,因为存储在客户端,容易被客户端篡改,使用前需要验证合法性;
- 能存储的数据量不能超过 4kb;
- 有数量限制,一个浏览器针对一个网站最多存 20 个Cookie,浏览器一般只允许存放 300 个Cookie;
- 移动端对 cookie 的支持不是很好,而 session 需要基于 cookie 实现,所以移动端常用的是 token;
- cookie为不可跨域的:每个 cookie 都会绑定单一的域名,无法在别的域名下获取使用;
session 是另一种记录服务器和客户端会话状态的机制。session 是基于 cookie 实现的,session 存储在服务器端,可以理解为一个状态列表,他拥有一个唯一识别符号sessionId,通常存放于cookie中。
session认证流程:
- 首先,浏览器客户端会发送一个http请求到服务器端;
- 服务端接收请求后,创建对应的 session,并发送一个http响应到客户端,这个响应头中就包含 Set-Cookie 头部。该头部包含了sessionId;
- 浏览器接收到服务端返回的 sessionId 后,将信息存入 cookie,同时cookie记录此 SessionID 属于哪个域名;
- 当用户第二次发起请求时,请求会自动判断此域名下是否存在 Cookie 信息,如果存在浏览器会自动在请求头中添加 cookie 发送到服务端;
- 服务端接收请求,会从 Cookie 中获取 sessionId,再根据 sessionId 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作;
有了 Cookie 为什么还要 Session?使用 session 存在的问题:
- session 存储在服务器里面,这些 session 会占据较多的内存,需要在服务端定期的去清理过期的 session
- 移动端对 cookie 的支持不是很好,而 session 需要基于 cookie 实现,所以移动端常用的是 token
- 扩展性不好:例如互联网公司为了可以支撑更大的流量,后端往往需要多台服务器共同来支撑前端用户请求,那如果用户在 A 服务器登录了,第二次请求跑到服务 B 就会出现登录失效问题。
- 使用 session 只需要在客户端保存一个 sessionId,实际上大量数据都是保存在服务端。如果全部用 cookie,数据量大的时候客户端是没有那么多空间的( 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie)。
- 全部在客户端保存,服务端无法验证,这样伪造和仿冒会更加容易。
- 全部保存在客户端,那么一旦被劫持,全部信息都会泄露;
- 客户端数据量变大,网络传输的数据量也会变大;
- 存储位置不同:cookie 数据存放在客户的浏览器上,session 数据放在服务器上;
- 安全性不同:cookie 不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
- 存取值的类型不同:cookie 只支持存字符串数据,session 可以存任意数据类型。
- 有效期不同:cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,session 一般失效时间较短,客户端关闭或者 session 超时都会失效。
- 存储大小不同:单个 cookie 保存的数据不能超过 4K,session 可存储数据远高于 cookie;
token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个令牌,当用户第一次登录后,服务器生成一个token便将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码,减轻服务器的压力。
参考:
五分钟搞懂 Session、Cookie和Token - 掘金
聊一聊session和cookie - 掘金
Cookie和Session详解 - 掘金
看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了 - 掘金
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前文章:Cookie、Session和Token-创新互联
文章分享:http://ybzwz.com/article/hpigc.html