Node.js 会话端口是特定的吗?

Node.js 会话端口是特定的吗?,node.js,session,Node.js,Session,我正在本地主机上编写两个应用程序,不希望它们共享某些信息(可能在会话中) 我想知道我是否能开两个端口?会话存储端口是特定的吗 我想知道我是否能开两个端口 是的,您可以通过启动两台服务器(每个端口一台)在两个端口上侦听 会话存储端口是特定的吗 是和否。这取决于会话的配置方式 cookie不是特定于端口的,因此会话cookie本身可以在同一主机上的两台服务器之间共享,但端口不同 因此,如果您希望在同一主机上的两个单独的web服务器上有两个express session实例,但需要使用单独的端口来使用

我正在本地主机上编写两个应用程序,不希望它们共享某些信息(可能在会话中)

我想知道我是否能开两个端口?会话存储端口是特定的吗

我想知道我是否能开两个端口

是的,您可以通过启动两台服务器(每个端口一台)在两个端口上侦听

会话存储端口是特定的吗

是和否。这取决于会话的配置方式

cookie不是特定于端口的,因此会话cookie本身可以在同一主机上的两台服务器之间共享,但端口不同

因此,如果您希望在同一主机上的两个单独的web服务器上有两个express session实例,但需要使用单独的端口来使用单独的会话,则可以初始化express session以对每个会话使用单独的cookie(通过为每个会话指定不同的cookie名称)初始化express会话的两个独立实例,然后这两个会话将完全分离

下面是一个例子:

const express = require('express');
const session = require('express-session');

// configure first server and session middleware
const app1 = express();
app1.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true },
  name: 'session1'
}));
app1.listen(8080);

// configure second server and separate session middleware/session cookie
const app2 = express();
app2.use(session({
  secret: 'keyboard cat',
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true },
  name: 'session2'
}));
app2.listen(8081);

而且,如果要为会话指定特定的存储介质,则需要确保将它们初始化为单独的存储位置。

我不明白您是如何为端口指定Cookie的。我有两个在本地主机上具有不同端口的独立应用程序,它们的cookie相互干扰。一个运行在
node.js
上。另一个是在
C++
@ar2015上-正如我的回答所说,cookie不是特定于端口的,因此使用相同DNS名称和不同端口的两台服务器将共享cookie。我在回答中所做的是为每个会话使用两个单独的cookie名称,这样会话本身就不会相互干扰。因此,如果您要共享cookie,您只需确保cookie名称不冲突即可。您可以为每个服务器使用不同的DNS名称(每个名称指向相同的IP地址),这将为每个服务器提供单独的cookie。