【发布时间】:2021-12-07 08:51:52
【问题描述】:
我有一个 Express 服务器,我正在其上生成一个 csrf 令牌。我的服务器看起来像这样
const csrfProtection = csrf({
cookie: {
httpOnly: true,
},
});
server.use(express.json());
server.use(express.urlencoded({ extended: true }));
server.use(
cors({
origin: "http://localhost:3000",
credentials: true,
})
);
server.use(cookieParser());
server.use(csrfProtection);
...
//Other routes
我正在像这样发送令牌
export const csrf = (req, res) => {
return res.send({ csrfToken: req.csrfToken() });
};
如果我从响应中获取它并将其添加到 Postman 中的 X-CSRF-Token 标头中,那么我可以访问所有路由就好了。但是当我在 React 中执行此操作时,我总是会收到 invalid csrf token 错误
这就是我在 React 中获取令牌的方式
export const getCSRFToken = async () => {
try {
const { data } = await axios.get("/auth/csrf");
axios.defaults.headers.post["X-CSRF-Token"] = data.csrfToken;
} catch (error) {}
};
我在其他请求上使用withCredentials: true 标志。我无法弄清楚我错过了什么。
【问题讨论】:
标签: node.js reactjs express csrf