node.js - 第一页加载时有多个快速 session 实例

标签 node.js session express

我自动为每个用户提供一个 session ,并将 session 数据存储在名为 sessions 的 MongoDB 集合中。我还设置了一个 cookie,它允许我识别每个(返回)用户。当用户返回时,当 cookie 与请求一起发送时,我能够成功找到我的 session 。

除了用户第一次访问该网站之外,一切正常。前端(使用 Angular 构建)同时向 Node 服务器发出六个不同的调用(每个调用都有其自己的目的)。由于还没有设置cookie, Node 服务器认为有六个不同的用户调用服务器,从而创建了六个 session 并将其存储到 session 集合中。

下一次调用(在用户操作之后)发生在倒数第二个创建的 session 中,并且以后的每个调用都使用此 session ID 进行。

如何解决用户第一次访问网站时初始创建六个不同 session 的问题?

可以执行一次调用来“启动” session 并在响应后执行其余部分。但如果还有其他选择,我真的很想听听。

我使用的是 Express.js 4.0、Node.js v0.10.32 和 MongoDB v2.6.5 的自定义版本。

这就是我创建 session 并设置 cookie 的方式:

app.use(session({
    saveUninitialized: true,
    resave: true,
    cookie: { secure: false, httpOnly: false },
    name: 'someName',
    secret: 'someScret',
    store: new mongoStore({
        db: framework.mongoose.connection.db,
        collection: 'sessions'
    })
}));

如果您需要更多信息,请告诉我。

最佳答案

我自己想出来了。 OPTIONS 请求存在问题。选项请求不会在 header 中发送 cookie,这会导致在 Node 服务器上创建新 session 。

由于options requests只是用于检查跨域授权,所以肯定是有cors的东西。我禁用了 cors,并在禁用 cors 的情况下启动了 Chrome。这解决了问题。

请注意:我实现 cors 只是为了(更容易)本地开发。我不需要在实时服务器上使用 cors。

这是打开 Google Chrome 的突击队员(仅限 Mac):

open -a Google\ Chrome --args --disable-web-security

关于node.js - 第一页加载时有多个快速 session 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28694961/

相关文章:

node.js - CLI 的 commander.js 集成测试

node.js - Mongoose 更新总是给我 TypeError : Cannot set property '__v' of undefined

java - 在 Tomcat 中的上下文之间共享 session 数据

spring - 为什么LocalSessionFactoryBean 不实现getCurrentSession,同时SessionFactory 的实例可以调用该方法?

node.js - Nodejs - Expressjs SSL (HTTPS) 野兽攻击 --- Node 不遵守命令

javascript - 包装回调 API 并监听错误?

javascript - TypeError : sql. 连接不是函数 Node.js

php - AJAX 脚本会在 PHP 中保持 session 吗?

javascript - 选项卡打开时持续的 session 的身份验证逻辑

node.js - 内容安全策略 : The page’s settings blocked the loading of a resource at inline (“default-src” )