【问题标题】:Node / Socket.io - Setting cookies server-side when using socketsNode / Socket.io - 使用套接字时在服务器端设置 cookie
【发布时间】:2016-10-14 05:46:43
【问题描述】:

我希望能够在服务器端修改用户的 cookie,以响应来自客户端的套接字事件。

本质上是在请求-响应周期中模仿 cookie 的位置。像这样:

res.cookie('rememberme', '1', { expires: new Date(Date.now() + 900000), httpOnly: true });

但是,由于我使用的是套接字,我假设响应对象不能以相同的方式使用。

问题:

使用 socket.io 时设置/更新 cookie 服务器端的标准方法是什么?

【问题讨论】:

    标签: node.js sockets express cookies socket.io


    【解决方案1】:

    我认为最接近“标准”的东西实际上是“最佳实践”,这可能来自图书馆的author。此外,根据您的帖子,尚不清楚您是打算在套接字交互的中途修改 cookie 还是只是最初设置。如果不重新建立连接,我认为前者是不可能的。考虑到这一点,您可以在“握手”阶段通过套接字设置 cookie。从 socket.io v1 开始,最好的做法是使用这样的中间件:

    io.use(function(socket, next) {
    
      // cookie information is contained here: socket.request
      // manipulate it as you see fit
    
      next();
    });
    

    希望对你有帮助。

    【讨论】:

    • 从我的所有搜索中,您可能是正确的,握手阶段是唯一的地方。由于 socket.io 仍然可以访问请求对象和 cookie,因此我希望它可能也可以访问响应对象,或者至少可以通过一种方式修改响应标头。可惜,我喜欢使用 cookie 来保存一点客户端状态以避免数据库获取。
    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 2023-02-25
    • 2015-07-19
    • 1970-01-01
    • 2011-05-07
    • 2015-08-14
    • 2021-12-20
    • 2021-10-16
    相关资源
    最近更新 更多