【发布时间】:2020-11-13 23:36:32
【问题描述】:
这是我的反应代码:
axios.get('http://localhost:5000/check').then(() => {
axios.post('http://localhost:5000/cookie', null, { withCredentials: true });
});
后端节点js:
import express, { Application, Request, Response } from 'express';
import cors from 'cors';
import bodyParser from 'body-parser';
import cookieParser from 'cookie-parser';
const app: Application = express();
app.use(cookieParser());
app.use(cors({ credentials: true, origin: 'http://localhost:3000' }));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.get('/check', (req, res) => {
res.cookie('token', 'asdasd3123123', { httpOnly: true });
res.send(200);
});
app.post('/cookie', (req: Request, res) => {
console.log(JSON.stringify(req.cookies));
res.send();
});
app.listen(5000, () => {
console.log('Server running on port 5000');
});
在响应中收到 cookie,但未在浏览器中设置,当我记录 request.cookies 时会打印一个空对象。
【问题讨论】:
-
您的 cookie 没有在您的客户端中设置?
-
它们不是在客户端中设置的一件事。我也无法在后端获取 cookie(它应该被携带到每个请求中)。
-
介意我使用 express-session 提供解决方案吗?那么 express-session 的工作原理是它创建一个服务器端 cookie 在 cookie 发送到客户端时自动将该会话存储在 mongoDB 中,并在 react 应用程序中将该 cookie 设置为 httpOnly?
-
我想知道为什么这不起作用..但欢迎您提出建议。谢谢你的努力????
-
有了这个错误,我没有用过 cookie 解析器,但使用 express-session 这更符合行业标准