axios 问题请求头X-XSRF-TOKEN

hvvq6cgz  于 4个月前  发布在  iOS
关注(0)|答案(4)|浏览(69)

描述问题

我使用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

其他上下文/截图

  • 无响应*
jqjz2hbq

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;

oiopk7p5

oiopk7p52#

谢谢!它起作用了。

8tntrjer

8tntrjer3#

在我的下一个js应用程序中,我应该在哪里添加它?

r55awzrz

r55awzrz4#

在我的下一个js应用程序中,我应该在哪里添加它?
在Axios头部还是你可以使用
axios.defaults.withXSRFToken = true
@anwarhossain1

相关问题