gpt4 book ai didi

node.js - Axios 发布失败,并显示 403 CSRF token 验证失败,但在 Postman 中工作正常

转载 作者:太空宇宙 更新时间:2023-11-04 01:31:20 26 4
gpt4 key购买 nike

我已尝试了所有方法,但无法让 Axios 与 SAP Odata Post 服务配合使用。问题是 CSRF token 验证失败,但在 Postman 中工作正常。

我的请求如下所示:

const postNewTasks = async (body, headers) => (await axios.get(getHeadersandCFRSURL, {
headers: { 'authorization': auth, 'x-csrf-token': 'fetch' },
withCredentials: true
}).then((response) => {
axios({
method: 'POST',
url: postBatchOperationsURL,
headers: {
"Authorization": auth,
"Content-Type": "multipart/mixed; boundary=batch_1",
"X-CSRF-Token": response.headers["x-csrf-token"], // set CSRF Token for post or update
},
withCredentials: true,
body: body

}).then(function (response) {
console.log(response)
return response
}).catch(function (err) {
console.log(err)
return err
})
})
)

有人知道为什么这个 axios 请求 CSRF token 验证失败吗?

最佳答案

我最近遇到了这个问题,一个对我有用的解决方案是添加一个 Cookie header ,其中包含初始响应 set-cookie header 中的 cookie。

Postman 自动执行此操作,但 axios 似乎不会。我的代码在 "x-csrf-token":"fetch":

之后
var xcsrftoken = response.headers["x-csrf-token"];
var cookies = '"';
for (var i = 0; i < response.headers["set-cookie"].length; i++) {
cookies += response.headers["set-cookie"][i] + ";";
}
cookies += '"';
axiosClient.defaults.headers.common[this.xcsrftokenName] = xcsrftoken;
axiosClient.defaults.headers.common["Cookie"] = cookies;

axiosClient 是由 axios.create 创建的对象。我已将这些 header 设置为默认 header ,以便以后不需要将它们包含在请求中。还有多个 set-cookie header ,有必要将它们合并为一个。

关于node.js - Axios 发布失败,并显示 403 CSRF token 验证失败,但在 Postman 中工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56022218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com