扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
目录
创新互联是专业的威信网站建设公司,威信接单;提供成都网站设计、成都网站建设、外贸网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行威信网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!前言
Cookie
Session
有了 Cookie 为什么还要 Session?
Cookie和Session的区别
Token
HTTP 是一种无状态协议。因为HTTP底层是TCP,是一个长连接,这个过程中是保持连接状态的。在这个连接过程中,客户端可以向服务器发送多次请求,各个请求之间没有什么联系。每次服务器接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录。
Cookie客户端请求服务器时,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie并在响应中带有Set-Cookie报头。而客户端浏览器会把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 就会出现登录失效问题。
token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个令牌,当用户第一次登录后,服务器生成一个token便将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码,减轻服务器的压力。
参考:
五分钟搞懂 Session、Cookie和Token - 掘金
聊一聊session和cookie - 掘金
Cookie和Session详解 - 掘金
看完这篇 Session、Cookie、Token,和面试官扯皮就没问题了 - 掘金
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流