gpt4 book ai didi

node.js - 客户端也是 ExpressJS 应用程序时的 Cookie 处理

转载 作者:可可西里 更新时间:2023-11-01 11:30:22 24 4
gpt4 key购买 nike

就我而言,要让服务器端应用程序知道哪些客户端正在与其通信,它会在客户端中保存一个带有 session ID 的 cookie。

这确实是 express-session 一个流行的 ExpressJS session 存储包在文档中所说的

Note Session data is not saved in the cookie itself, just the session ID. Session data is stored server-side.

所以我相信我可以假设这也是 Express 用来在 session 中维护用户数据的策略。

我做了其他事情:我使用 Redis 将 session 数据存储在我的 ExpressJS 服务器应用程序中。

话虽如此,我的问题是我的客户端应用程序也是一个 Express 应用程序。我有一个用于客户端和服务器的带有 Express 的 nodejs 应用程序。此问题涉及一个 SPA,但它与“快速客户端”通信,因此它似乎是一个不同的问题。

因此每次我从 Express Client 向 Express Server 发送请求时,都没有传递 cookie,因此它无法识别 session ID 并创建一个新 session ID,在 Redis 中产生大量垃圾并使 session 解决方案无用.

我应该如何在 Express Client 应用程序中保存或伪造 cookie,或者更好的是,如何解决此类问题?

实际上,如果我知道 Express Server 在请求中期望什么(cookie、 header 或其他),我想我可以解决问题。

有人知道该怎么办吗?

@已解决

好的,所以,在我的 nodejs 客户端应用程序中,我执行了以下操作:

login(req,res,next){
var options = {
url : 'http://localhost:8090/user/login_handler';
};

request(options, function(error,response,body) {
var cookie_string = response['headers']['set-cookie'][0].split(';')[0];
req.session.cookie_string = cookie_string;
});
}

check(req,res,next){
var options = {
url : 'http://localhost:8090/user/check_handler',
headers: {
'cookie':req.session.cookie_string
}
};

request(options, function(error,response,body){
res.json( body);
});
}

简而言之,在服务器端创建 session 时,它会响应 header 告诉客户端创建一个cookie。我保存重要信息以在不同时刻作为 cookie 传递。服务器端然后读取中间件中的 header 并将正确的数据加载到 session 中。

最佳答案

在不知道您的架构细节的情况下,我猜您想要的是设置 saveUnitialized false 选项,并且不保存无关的 session ,或者仅将 express-session 中间件应用于“Express Server”应用程序中的某些路由

关于node.js - 客户端也是 ExpressJS 应用程序时的 Cookie 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41351242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com