Http请求中的session与cookie关系.md

903 阅读1分钟

前言

由于Http协议是无状态的协议, 所以为了记住请求的状态,所以引入了session 和 cookie

1. session

服务器对于用户浏览器的请求,产生一个session,保留在服务器端, 然后将sessionId返回到前台,存放于cookie中的JSESSIONID中

2. cookie

存放在客户端(浏览器) 用于记录会话信息,比如登录信息,偏好设定等

过期时间

默认关闭浏览器后,cookie清空

3.demo

  1. 首次发送http请求

  1. 后台打印
@GetMapping("/sessionScope")
    @ApiOperation(value = "直接调用controller",notes = "controller设置成session")
    public JsonResult getIntegerInController(HttpServletRequest request){
        String sessionId = request.getSession().getId();
        log.info("sessionId 是 {}",sessionId);
        return JsonResult.ok().add("threadName", Thread.currentThread().getName())
                .add("session", sessionId);
    }


2020-08-06 15:06:01.923  INFO 20556 --- [nio-8192-exec-6] c.y.spring.controller.SessionController  : sessionId 是 CD748989F753BEF5C7AC5AD38CCD323D
  1. 第二次发送请求 cookie中携带了sessionId