首页 > 其他分享 >分析cookie session token区别

分析cookie session token区别

时间:2023-01-03 16:31:52浏览次数:68  
标签:set token session cookie https 服务端 客户端


github找个springMVC的例子,运行起来以供测试。​​https://github.com/Cenyol/SpringMVC​

修改部分代码

// 首页
@RequestMapping(value = "/", method = RequestMethod.GET)
public String index() {
ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes();

HttpServletRequest req = attr.getRequest();
HttpServletResponse response = attr.getResponse();

HttpSession session = req.getSession();
Enumeration enumerations = session.getAttributeNames();
String sessionId = session.getId();
String sessValue = (String)session.getAttribute("sess");

session.setAttribute("sess","session123456");

ServletContext servletContext = session.getServletContext();

Cookie[] cookies = req.getCookies();
Cookie cookie = new Cookie("aaaa", "bbb");
response.addCookie(cookie);
}

客户端(浏览器)和服务端如何识别同一个session

猜测 通过sessionID

验证:



分析cookie session token区别_javascript


image.png



分析cookie session token区别_java_02


image.png




image.png


同样的,如果不重启服务器。清空浏览器的cookie使得发送的请求头不包含cookie,服务端会视该请求为首次请求,并返回set-cookie。

session

java代码中的​​session​​​是服务器用于存储​​key​​​为​​sessionID​​​,​​value​​​为Map的容器.
如下图:



分析cookie session token区别_前端_03


屏幕快照 2017-11-01 10.42.13.png


JSESSIONID是java容器默认生成名为​​JSESSIONID​​的session id。

Examples of the names that some programming languages use when naming their cookie include JSESSIONID (​​Java EE​​​), PHPSESSID (​​PHP​​​), and ASPSESSIONID (​​Microsoft​​​ ​​ASP​​).

cookie

cookie是客户端存储数据的空间。
但为什么服务端可以操作cookie,客户端也可以操作cookie,这两者之间有什么关联和区别?

服务端操作cookie的方式是set-cookie,而客户端是取cookie。
在客户端首次访问服务时,请求头中没有包含cookie,这时服务端会判断用户为首次登录,记录标识并在返回的头部包含set-cookie键值。
随后客户端拿到这set-cookie并存放在cookie中,再次访问服务时,request的头部中会包cookie字段。

session ID 与token

​session ID​​​和​​token​​​是一码事,都是用于标识会话,只不过它们的生成规则不一样。
它们通常会存储于cookie中,并会随着​​​http请求​​发送至服务端。

参考

标签:set,token,session,cookie,https,服务端,客户端
From: https://blog.51cto.com/eblly/5986107

相关文章