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

使用Spring Web Jars时Cookies.get('XSRF-TOKEN')返回undefined求助

搞定Spring Web Jars里Cookies.get('XSRF-TOKEN')返回undefined的问题

嘿,我来帮你排查这个问题~结合你给出的Thymeleaf代码片段,我整理了几个常见的原因和对应的解决办法:

1. 先确认XSRF-TOKEN Cookie到底有没有被设置

第一步先打开浏览器的开发者工具(F12 -> Application面板 -> Cookies),看看里面有没有XSRF-TOKEN这个Cookie:

  • 如果没有,那问题出在后端:Spring默认会在渲染Thymeleaf页面时自动生成并发送这个Cookie,但前提是你的请求是经过Spring MVC控制器处理的(直接访问静态HTML文件不会触发这个逻辑)。另外要确保Spring Security的CSRF保护没有被手动关闭(默认是启用的)。

2. 检查Js-Cookie库是否真的加载成功

你页面里引入了/webjars/js-cookie/js.cookie.js,但得确认这个库是否正常加载:

  • 可以在页面里加一行测试代码,看看Cookies对象是否存在:
    console.log(Cookies);
    
    如果控制台输出undefined,说明库没加载成功。这时候可以直接在浏览器地址栏访问/webjars/js-cookie/js.cookie.js,看看能不能正常返回文件内容,排查路径是否正确或者WebJars依赖是否引入到位。

3. 换个思路:直接从meta标签获取CSRF Token

既然你已经通过Thymeleaf在页面里设置了_csrf和_csrf_header的meta标签,其实完全可以绕过Cookie,直接从meta标签取,这种方式反而更稳定:

// 获取Token和对应的请求头名称
const csrfToken = document.querySelector('meta[name="_csrf"]').content;
const csrfHeader = document.querySelector('meta[name="_csrf_header"]').content;

之后在AJAX请求里带上这个头就行:

$.ajax({
  url: '/你的接口地址',
  method: 'POST',
  headers: {
    [csrfHeader]: csrfToken
  },
  // 其他请求参数...
});

4. 排查Cookie的路径/域配置

如果浏览器里能看到XSRF-TOKEN Cookie,但Cookies.get()拿不到,大概率是Cookie的路径设置问题。比如Cookie的Path是/admin,但你的页面在根路径/下,就会获取不到。可以在开发者工具里查看Cookie的Path属性,确保它和你的页面所在路径匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:19:44