express项目中用到了express-session,开发阶段前后端是两个不同的服务,所以前段用了代理的方式去请求服务端,发现这样session保存不了。请问是什么原因,该怎么解决呢?
app.use(session({
secret: 'xxx',
resave: true,
saveUninitialized: false,
maxAge: 1000 * 3600
}));
我前端用的是angular的脚手架,开发的时候前段启了一个服务为localhost:3000,然后服务端的地址是localhost:1994,这样算是不同的域的吧?
因为后端用了session,而session很关键的一步就是要在浏览器上设置一个cookie,好像在跨域的情况下,登录完之后cookie没有设置上去,response上是有cookie的
我应该从前端解决这个问题,还是从服务端解决呢?
session是cookie的升级版,是使用cookie当做id,然后数据存在服务器上的做法。
然而,跨域对于cookie来说,就是两个不同的网站。所以并不是设置一个什么就能解决的。
不同端口算是不同的域的。
所以你可以设置一个nginx或者什么别的来做一下转发,避免跨域。
可以弄一个nginx,设置8080,然后app指向3000,api指向1994。
或者不使用session,而使用token来做api请求。