SessionId 在 Spring Boot Application 中的每个 curl 请求中不断变化

Posted

技术标签:

【中文标题】SessionId 在 Spring Boot Application 中的每个 curl 请求中不断变化【英文标题】:SessionId keeps changing in every curl request in Spring Boot Application 【发布时间】:2021-09-11 07:57:40 【问题描述】:

我有以下返回 SessionId 的 RestController:

@GetMapping(value = "/api/sessionid")
public @ResponseBody String getSessionId() 
    return RequestContextHolder.currentRequestAttributes().getSessionId();

当我使用 PostmanChrome 浏览器 时,它会在每个请求上返回相同的 SessionId。但是当我使用 CURL 来获取 SessionId 时,它会在每个请求上返回一个 不同 SessionId。

为什么我使用 CURL 时 SessionId 会改变?

【问题讨论】:

因为你没有发送会话cookie,如果你使用浏览器默认发送。 【参考方案1】:

当您使用 Chrome 向服务器发送请求时:服务器使用 cookie 作为会话跟踪机制来识别您的会话。 当您使用 CURL 时:没有会话跟踪机制,这就是服务器为每个请求创建一个新会话的原因。

您可以在此处阅读有关会话跟踪的更多信息:https://javapapers.com/servlet/explain-the-methods-used-for-session-tracking/

【讨论】:

以上是关于SessionId 在 Spring Boot Application 中的每个 curl 请求中不断变化的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring websocket 的 SessionDisconnectEvent 中使用 sessionId

Spring Security sessionID 作为令牌配置

第二个spring-boot程序

企业级spring-boot案例-自定义Spring Boot Starter

spring-boot系列:初试spring-boot

Spring Security---会话固定攻击防御