描述问题
我在Express服务器上创建了一个post请求,用于设置cookie,然后get请求用于获取cookie。在Postman中可以正常工作,但在axios中无法正常工作。
示例代码
const express = require("express");
const cookieParser = require("cookie-parser");
const axios = require("axios");
const cors = require("cors");
const app = express();
const corsConfig = {
origin: ["http://localhost:9779"],
credentials: true,
};
app.use(cookieParser());
app.use(cors(corsConfig));
app.post("/set", (_, res) => {
res.cookie("cookieName", "cookieValue");
res.json("ok");
});
app.get("/hello", (req, res) => {
res.json(req.cookies.cookieName);
});
app.listen(9779, async () => {
const appAxios = axios.create({
baseURL: "http://localhost:9779", // specify base URL here
withCredentials: true,
});
await appAxios.post("/set", {}, { withCredentials: true }); // use relative path
const res = await appAxios.get("/hello", { withCredentials: true }); // use relative path
console.log(res.data); // it is printing empty
});
预期行为
它应该打印出cookie的值。但现在打印的是空字符串。
axios版本
1.6.1
适配器版本
- 无响应*
浏览器
- 无响应*
浏览器版本
- 无响应*
Node.js版本
v18.12.0
OS
mac os
其他库版本
- 无响应*
其他上下文/截图
- 无响应*
4条答案
按热度按时间ukdjmx9f1#
Postman工作截图
3duebb1j2#
你能检查一下是否在rawHeaders中设置了吗?我正在使用nock做这件事,我也遇到了同样的问题。对我来说,
set-cookie
在 rawHeaders 中设置了,但在response.headers
中未定义。影响范围:axios v1.0.0 到 v1.6.25sxhfpxr3#
Thanks @james-wee-iress . I tried but even in raw headers it is not set
ars1skjm4#
你好,当我尝试在服务器文件中运行这段代码时,cookie没有被设置。然而,如果你引入前端(例如React),并在按钮点击时发起请求,cookie会被注册和存储。
我认为在一个服务器文件中完成所有操作可能存在一些问题。我不太确定问题出在哪里。我向bard(谷歌AI)查询,它给了我以下信息(如果有误,请纠正,因为我不确定):
https://g.co/bard/share/e96bec60b11a
如果这有帮助的话,请告诉我。(你也可以看到我编写的React代码和服务器代码,以便让它正常工作。)