分析cookie session token区别

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

验证:

image.png
image.png
image.png

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

session

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

屏幕快照 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 IDtoken是一码事,都是用于标识会话,只不过它们的生成规则不一样。
它们通常会存储于cookie中,并会随着http请求发送至服务端。

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值