前后端分离、session和cookie、token
2018-12-07 23:33
295 查看
前后端分离需要token(令牌)来进行互通。
前端第一次登录后,后端使用userid,时间戳等信息组成字符串,然后使用加密技术来进行加密,这就是token,传给前端。以后前端在调用接口时,就把token带上,后端拦截器取得这个token后进行解密,如果可正常解密拿到相关数据,则认为是合法信息。
前端和后端分属不同项目,域名不同,需要用CROS进行跨域处理。
- HTTP是基于请求/响应模式、无状态的协议。
- 所有请求是相互独立的、无连续的。
- 服务器无法记住与识别客户。
一、cookie和session
session跟踪是web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是cookie和session。cookie通过在客户端记录信息确定用户身份,session通过在服务器端记录确定用户身份。
二、实现会话跟踪的技术
1.cookie
所有的HTTP消息,不管时请求还是响应均包含头消息
- 当返回响应给客户端时,Servlet容器会把会话的信息添加到响应头信息中。
- 客户端浏览器接收到响应后提取头信息,并将其存储在本地机中,再发送请求会将该信息带回服务器端
- 由浏览器存储在客户端机器上的头信息就称作cookie,以"属性名=属性值;"方式组成的文本信息。
从客户端读取cookie:
String cookieName = “userID”; Cookie[ ] cookies = request.getCookies(); if(cookies != null) { for(int i=0; i<cookies.length; i++){ Cookie cookie = cookies[i]; if(cookieName.equals(cookie.getName())){ //doSomethingWith(cookie.getValue()); } } }
向客户端发送cookie
//创建Cookie对象 Cookie c = new Cookie("userId","a1234"); //设置最大失效 如果要告诉浏览器将cookie存储到磁盘上,而非仅保存在内存中,使用serMaxAge(秒数) //将Cookie放入到HTTP响应中 response.addCookie(c);//如果没有这一步,将不会有任何cookie发送到浏览器中。
优缺点:
-
可配置到期规则,数据可持久保存
-
不需要服务器资源,数据保存到客户端
-
简单性,基于文本的key-value对
-
大小收到限制
-
用户可禁用客户端接收cookie的功能
-
潜在的安全风险
##2. URL重写
客户程序在每个URL尾部添加额外的数据来标识会话.http://localhost/mysite/file.html;jsessionid=1234 -
cookie被禁用或者根本不支持的情况下依旧能够工作.
-
缺点:必须对所有URL进行编码
3.隐藏的表单域
- 缺点:所有页面必须是表单提交之后的结果
4.会话对象
会话对象生存于服务器上。会话自动通过cookie或URL重写与客户关联起来。
- 使用request.getSession()来得到会话,系统检查cookie或附加在URL上的额外信息,看看是否与之前存储的会话对象的键相匹配。如匹配,返回该对象,否则创建新对象
- 在服务器端会创建一个session对象,产生一个sessionID来标识这个sessione对象,然后将这个sessionID放入到Cookie发送到客户端,下一次访问时,sessionID会发送到服务器,在服务器端识别不同的用户。
- sesison是依赖cookie,如果cookie禁用,那么session也失效。
相关文章推荐
- 前后端分离时保持前端的cookie一直都是一个从而让后端session是同一个
- 前后端分离时保持前端的cookie一直都是一个从而让后端session是同一个
- Cookie、Session、Token那点事儿
- vuejs前后端分离,session问题
- Cookie、Session和Token
- cookie、session与token
- cookie、session、token的理解
- 与Session的亲密接触&彻底掌握Java中Session Token Cookie
- 前后端分离方案token工具类
- 在前后端分离的项目中,ajax跨域请求怎样附带cookie
- 后端_第四课_开始使用COOKIE和SESSION
- 前后端分离:使用spring的Aop实现Token验证
- session,cookie,token区别
- cookie、session和token区别
- cookie,session和token的区别和应用场景
- Session/Cookie/Token的区别
- 【Todo】Java学习笔记 100==100 & Reflection API & Optional类详解 & DIP、IoC、DI & token/cookie/session管理会话方式
- cookie/session/token的区别与联系
- 日常小结-关于模拟登陆的小结-抓包、cookie、session和token
- 在前后端分离的项目中,ajax跨域请求怎样附带cookie