【发布时间】:2021-12-25 14:02:26
【问题描述】:
我在 AXIOS 上苦苦挣扎:我的发布请求似乎没有使用我的 Cookie。
首先,我正在创建一个 Axios 实例,如下所示:
const api = axios.create({
baseURL: 'http://mylocalserver:myport/api/',
header: {
'Content-type' : 'application/json',
},
withCredentials: true,
responseType: 'json'
});
我尝试与之交互的 API 需要密码,因此我定义了一个包含我的密码的变量:
const password = 'mybeautifulpassword';
首先,我需要发布一个创建会话的请求,并获取 cookie:
const createSession = async() => {
const response = await api.post('session', { password: password});
return response.headers['set-cookie'];
}
现在,通过使用返回的 cookie(存储在 cookieAuth 变量中),我可以与 API 进行交互。
我知道有一个端点允许我检索信息:
const readInfo = async(cookieAuth) => {
return await api.get('endpoint/a', {
headers: {
Cookie: cookieAuth,
}
})
}
这工作正常。
当我想发起一个帖子请求时,这是另一个故事。
const createInfo = async(cookieAuth, infoName) => {
try {
const data = JSON.stringify({
name: infoName
})
return await api.post('endpoint/a', {
headers: {
Cookie: cookieAuth,
},
data: data,
})
} catch (error) {
console.log(error);
}
};
当我启动 createInfo 方法时,我得到了 401 状态(未授权)。看起来 Axios 没有将我的 cookieAuth 用于发布请求...
如果我使用 Postman 发出相同的请求,它可以工作...
我在这段代码中做错了什么?非常感谢您的帮助
【问题讨论】:
-
您可以将cookieJar support 添加到 axios,这样它就会为您保留 cookie,而不是您手动进行..
-
你看清楚
response.headers['set-cookie']是什么了吗?由于您可以有多个set-cookie标头,因此我认为这可能是一个数组,而不是单个 cookie。此外,它可能包含过期信息和其他属性,您不会发送回服务器。
标签: node.js post axios postman