就在今天,碰到了一个问题,express-session在本地调用的时候可以正常的去set sessionID的cookie,但是当我打包完,进行本地运行测试的时候,cookie死活都设置不了,查了各方资料,终于确定是跨域导致的问题。
解决方法:
前端axios加上一句
axios.defaults.withCredentials = true
后端(我用的是nestjs)
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
res.setHeader('Access-Control-Allow-Credentials', 'true'); //允许携带cookie,设置这个的话上一条的设置不能为'*'
res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS'); //允许跨域的请求方法
res.header(
'Access-Control-Allow-Headers',
'X-Requested-With, Content-Type',
); //允许的请求头部
next();
});
app.enableCors({
origin: 'http://localhost:3000',
methods: 'GET,PUT,POST',
allowedHeaders: 'Content-Type,Authorization',
exposedHeaders: 'Content-Range,X-Content-Range',
credentials: true, // 允许凭证请求
// maxAge: 3600,
});
设置请求头,并设置跨域cors。这样就可以成功的set cookie了。