2017-06-17 59 views
0

我正在寫本地主機上的兩個應用程序,並不希望他們共享某些信息(可能會話)。會話端口特定?

我想知道我是否可以打開兩個端口?會話存儲端口是特定的嗎?

回答

1

我想知道是否可以打開兩個端口?

是的,你聽兩個端口,通過啓動兩個服務器,每個端口一個。

會話存儲端口是否特定?

是和否。這取決於會話如何配置。

Cookie不是特定於端口的,因此會話cookie將在同一主機上的兩個服務器之間共享,但不同的端口。因此,如果您希望在同一臺主機上的兩臺獨立Web服務器上使用兩個快速會話實例,但使用不同的端口以使用不同的會話,則可以初始化快速會話以在每個會話中使用單獨的Cookie(通過指定每個cookie的名稱不同)並初始化兩個獨立的快速會話實例,然後這兩個會話將完全分開。

下面是一個例子:

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); 

而且,如果你指定一個特定的存儲介質爲會話,那麼你需要確保你初始化這些是單獨的存儲位置。

+0

我不明白你是如何爲端口指定cookie的。我有兩個單獨的應用程序與本地主機上的不同端口和他們的cookie互相干擾。一個在'node.js'上運行。另一個是'C++'。 – ar2015

+1

@ ar2015 - 正如我的回答所說,cookie不是端口特定的,因此使用相同DNS名稱和不同端口的兩臺服務器將共享cookie。我在答案中所做的是爲每個會話使用兩個單獨的cookie名稱,因此他們的會話本身不會互相干擾。所以,如果你打算分享cookies,你只需要確保沒有任何cookie名稱發生衝突。您可以爲每個服務器使用不同的DNS名稱(每個DNS名稱指向相同的IP地址),併爲每個服務器分別提供Cookie。 – jfriend00