我有一个带有 Spring Boot 3.0.1 后端的 vue 应用程序,我想使用 CSRF。 Vue 前端和 Spring Boot 后端由不同的系统提供服务。我打算使用 nginx 反向代理来缓解 CORS 主题,但是无论是否涉及 nginx,都会出现这个问题。
我的 vue 应用程序做的第一件事是请求 csrf 令牌,将其存储在全球范围内,以便在用户会话期间使用它。
当用户登录时,会初始化几个 pinia 存储。但不幸的是,在这些请求期间,每个请求发送的 JSESSIONID Cookie 都会被后端忽略,并发出一个新的 JSESSIONID。在使用应用程序并发出进一步的 GET 请求时,JSESSIONID 不断变化
这使得初始 JSESSIONID 的“全局”存储的 CSRF 令牌当然无效......
“csrf”请求标头:
“登录”标题:
然后突然间,第 5 个请求获得了一个新的 JSESSIONID,尽管我在请求中发送了 JSESSIONID Cookie(由服务器发送 - 为什么?
为什么我的会话不断变化?我的 JSESSIONID 不应该始终保持不变吗?
进行 CSRF 的目的是什么?在发出任何(非 GET?)请求之前请求新令牌? (我的获取使用“凭据:“同源””)
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
我的SecurityConfig中有
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS),这导致了麻烦......据我所知,删除它解决了CSRF的使用。 p>