我正在使用node / express来制作纯后端api。我的前端(angular.js)托管在一个单独的服务器上。对于允许CORS的每个请求,我都有几行中间件。
如果我使用-args --disable-web-security标志启动chrome,一切都很有效!
但是,如果我正常启动,cookie似乎没有在浏览器中设置,因此节点端的会话没有开始。这对于safari / mobile safari /等是相同的。
我尝试过浏览器选项,例如“接受所有Cookie”/“永不阻止Cookie”。我想也许浏览器不喜欢localhost,但这在localhost和实际托管域上是相同的行为。
流程是:
我登录并且会话设置为id,成功时前端指向下一页。这工作,我控制台记录req.session.id,这是正确的。
在下一页上发送请求,节点服务器配置为在会话中使用此请求的id。随着safari / mobile safari / chrome,req.session.id突然变空。在禁用chrome -security的情况下,req.session.id仍然是正确的,并且表现得像它应该的那样。
答案 0 :(得分:1)
请参阅此答案,其中包含跨域Cookie和会话:Using Express and Node, how to maintain a Session across subdomains/hostheaders