描述问题
我使用Springboot 2.5.14作为后端。配置管理了CORS,CSRF已启用。当我从前端向后端发起请求时,它返回一个XSRF-TOKEN和JSESSIONID的cookie。
对于每次对后端的请求,它都会发送带有XSRF-TOKEN、JSESSIONID和其他值的X-XSRF-TOKEN的cookie。
我对Axios没有问题:1.5.0。为了解决安全问题,我升级到了1.6.2。当我推送Post请求时,axios中的cookie会被发送,但会遗漏X-XSRF-TOKEN。后端拒绝请求并返回一条消息:“在请求参数'_csrf'或头部'X-XSRF-TOKEN'中找到无效的CSRF令牌'null'”。我重写了Axios请求的body请求
axios({
method: "post",
url: apiUri + "/api/recherche",
data: {
nom :' TINTIN'
},
headers: { "X-XSRF-TOKEN": document.cookie.substring(11) },
});
return axios;
请求后,cookie和X-XSRF-TOKEN值会被发送,但后端会启动HTTP 500错误,字段non为空。
重现步骤
- 无响应*
代码片段
- 无响应*
预期行为
- 无响应*
Axios版本
1.6.2
适配器版本
axios request
浏览器
Mozilla Firefox , Chrome Google
浏览器版本
119.0.1(64Bits) Mozilla -- 119.0.6045.124(64 bits) Chrome
Node.js版本
18.0.1
OS
window 10
其他库版本
Vue JS 3 -- VITE 6 Springboot ---Springboot 2.5.14
其他上下文/截图
- 无响应*
4条答案
按热度按时间jqjz2hbq1#
See https://github.com/axios/axios/releases
You have to add "withXSRFToken"
I did it in my react-app with laravel-backend as a default
axios.defaults.withXSRFToken = true;
oiopk7p52#
谢谢!它起作用了。
8tntrjer3#
在我的下一个js应用程序中,我应该在哪里添加它?
r55awzrz4#
在我的下一个js应用程序中,我应该在哪里添加它?
在Axios头部还是你可以使用
axios.defaults.withXSRFToken = true
@anwarhossain1