我其实也遇到了同样的问题,幸运的是在这里找到了解决方案:https://github.com/kriasoft/react-starter-kit/issues/1142
使用方法如下:
app.use(csrf({ cookie: true, value: (req) => (req.cookies.csrfToken) }));
然后对于每个get请求,设置一个带有csrf令牌的cookie:
res.cookie('csrfToken', req.csrfToken ? req.csrfToken() : null, { sameSite: true, httpOnly: true });
value
函数应该检查请求的正文或头部,而不是查看 cookie,这是根据 csurf 文档中的默认行为。否则,检查 cookie 会让服务器容易受到 CSRF 攻击,而你正试图防御它! - Kenna