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 将从磁盘中删除。

使用 cookie 时存在的问题:

  • 不安全,不要存储敏感数据,比如用户密码,账户余额,因为存储在客户端,容易被客户端篡改,使用前需要验证合法性;
  • 能存储的数据量不能超过 4kb;
  • 有数量限制,一个浏览器针对一个网站最多存 20 个Cookie,浏览器一般只允许存放 300 个Cookie;
  • 移动端对 cookie 的支持不是很好,而 session 需要基于 cookie 实现,所以移动端常用的是 token;
  • cookie为不可跨域的:每个 cookie 都会绑定单一的域名,无法在别的域名下获取使用;
Session

session 是另一种记录服务器和客户端会话状态的机制。session 是基于 cookie 实现的,session 存储在服务器端,可以理解为一个状态列表,他拥有一个唯一识别符号sessionId,通常存放于cookie中。

session认证流程:

  • 首先,浏览器客户端会发送一个http请求到服务器端;
  • 服务端接收请求后,创建对应的 session,并发送一个http响应到客户端,这个响应头中就包含 Set-Cookie 头部。该头部包含了sessionId;
  • 浏览器接收到服务端返回的 sessionId 后,将信息存入 cookie,同时cookie记录此 SessionID 属于哪个域名;
  • 当用户第二次发起请求时,请求会自动判断此域名下是否存在 Cookie 信息,如果存在浏览器会自动在请求头中添加 cookie 发送到服务端;
  • 服务端接收请求,会从 Cookie 中获取 sessionId,再根据 sessionId 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作;

使用 session 存在的问题:

  • session 存储在服务器里面,这些 session 会占据较多的内存,需要在服务端定期的去清理过期的 session
  • 移动端对 cookie 的支持不是很好,而 session 需要基于 cookie 实现,所以移动端常用的是 token
  • 扩展性不好:例如互联网公司为了可以支撑更大的流量,后端往往需要多台服务器共同来支撑前端用户请求,那如果用户在 A 服务器登录了,第二次请求跑到服务 B 就会出现登录失效问题。
有了 Cookie 为什么还要 Session?
  • 使用 session 只需要在客户端保存一个 sessionId,实际上大量数据都是保存在服务端。如果全部用 cookie,数据量大的时候客户端是没有那么多空间的( 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie)。
  • 全部在客户端保存,服务端无法验证,这样伪造和仿冒会更加容易。
  • 全部保存在客户端,那么一旦被劫持,全部信息都会泄露;
  • 客户端数据量变大,网络传输的数据量也会变大;
Cookie和Session的区别
  • 存储位置不同:cookie 数据存放在客户的浏览器上,session 数据放在服务器上;
  • 安全性不同:cookie 不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
  • 存取值的类型不同:cookie 只支持存字符串数据,session 可以存任意数据类型。
  • 有效期不同:cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,session 一般失效时间较短,客户端关闭或者 session 超时都会失效。
  • 存储大小不同:单个 cookie 保存的数据不能超过 4K,session 可存储数据远高于 cookie;
Token

token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个令牌,当用户第一次登录后,服务器生成一个token便将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码,减轻服务器的压力。

参考:
五分钟搞懂 Session、Cookie和Token - 掘金
聊一聊session和cookie - 掘金
Cookie和Session详解 - 掘金
看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了 - 掘金

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

网页名称:Cookie、Session和Token-创新互联
当前网址:https://www.cdcxhl.com/article12/hpigc.html

成都网站建设公司_创新互联,为您提供手机网站建设搜索引擎优化网站设计定制开发外贸网站建设动态网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设