You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Spring Boot在无需认证的情况下追踪HTTP会话?

启用Spring Boot基础JSESSIONID会话追踪

Spring Boot默认仅在实际使用HTTP会话(如调用request.getSession()、注入会话作用域Bean)时才会创建会话并生成JSESSIONID Cookie。要实现「首个请求即创建会话并通过Cookie追踪」的需求,可通过以下两种方式配置:

方式一:配置文件直接设置

在application.properties中添加以下配置:

# 配置会话Cookie的基础安全属性
server.servlet.session.cookie.http-only=true
server.servlet.session.cookie.secure=false # HTTP环境设为false,HTTPS环境建议设为true
# 指定仅通过Cookie追踪会话
server.servlet.session.tracking-modes=COOKIE

# 核心配置:强制每次请求都创建会话(若不存在)
spring.session.always-create-session=true

如果使用YAML格式(application.yml):

server:
  servlet:
    session:
      cookie:
        http-only: true
        secure: false
      tracking-modes: COOKIE
spring:
  session:
    always-create-session: true

方式二:自定义拦截器强制创建会话

如果需要更灵活的控制(比如仅针对特定路径触发会话创建),可以编写拦截器在请求到达时强制生成会话:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Configuration
public class SessionConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new HandlerInterceptorAdapter() {
            @Override
            public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
                // 强制获取会话,不存在则立即创建
                request.getSession(true);
                return true;
            }
        });
    }
}

补充说明

如果你的会话作用域Bean会在首个请求中被注入使用,Spring原本就会自动触发会话创建;但如果首个请求未涉及该Bean,上述配置可以确保JSESSIONID Cookie在首次请求时就生成,满足基础会话追踪需求。

内容的提问来源于stack exchange,提问作者user435421

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:30:00