node - 跨域如何保持session?

查看:201
本文介绍了node - 跨域如何保持session?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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请求。

这篇关于node - 跨域如何保持session?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆