0

我正在使用 node/express 来制作纯后端 api。我的前端(angular.js)托管在单独的服务器上。对于每个允许 CORS 的请求,我都有几行中间件。

如果我使用 -args --disable-web-security 标志启动 chrome,一切正常!

但是,如果我正常启动它,cookie 似乎没有在浏览器中设置,因此节点端的会话不会启动。这对于 safari/mobile safari/etc 是相同的。

我尝试过诸如“接受所有 cookie”/“从不阻止 cookie”之类的浏览器选项。我想也许浏览器不喜欢 localhost 但这是 localhost 和实际托管域上的相同行为。

流程是:

  1. 我登录并使用 id 设置会话,成功后前端被定向到下一页。这有效,我控制台记录了 req.session.id 并且它是正确的。

  2. 在下一页发送请求时,节点服务器被配置为使用会话中的 id 来处理该请求。使用 safari/mobile safari/chrome,req.session.id 突然为空。在禁用 chrome -security 的情况下, req.session.id 仍然正确并且行为正常。

4

1 回答 1

1

请参阅涵盖跨域 cookie 和会话的答案:Using Express and Node, how to maintain a Session across subdomains/hostheaders

于 2013-07-11T17:05:50.393 回答