【问题标题】:Can I access a cookie from Socket.io?我可以从 Socket.io 访问 cookie 吗?
【发布时间】:2011-06-12 20:36:31
【问题描述】:

我想在cookie中设置一些用户信息,并能够在连接时访问它,这可能吗?

【问题讨论】:

    标签: node.js socket.io


    【解决方案1】:

    我明白了,这行得通:

    client.request.headers.cookie
    

    【讨论】:

    【解决方案2】:

    client.request.headers.cookie 导致竞争条件,因为 cookie 总是指向最后登录的用户。

    请看:Socket.IO Authentication

    【讨论】:

    【解决方案3】:

    使用 Socket.IO 0.8.7,您可以通过以下方式访问请求标头:

    socket.handshake.headers

    您可以在https://github.com/LearnBoost/socket.io/wiki/Authorizing找到更多详细信息

    【讨论】:

      【解决方案4】:

      查看 engine.io 源代码后,您可以使用以下方法设置 cookie:

      var io = require('socket.io')(3000);
      
      io.use((socket, next) => {
          socket.conn.transport.once('headers', (headers) => {
      
              headers['set-cookie'] ="sess=test;"; });
      
          next();
      });
      

      此代码可能与设置 sid cookie 的 engine.io 代码冲突。 因为 HTTP/1.1 和 HTTP/2 标头都不区分大小写,并且 engine.io 在标头对象中使用“Set-Cookie”添加小写对象名称“set-cookie”可以避免此问题。

      【讨论】:

        猜你喜欢
        • 2016-06-05
        • 2013-07-31
        • 2014-04-09
        • 2016-03-24
        • 2018-10-20
        • 2013-05-21
        • 1970-01-01
        • 2021-08-07
        • 1970-01-01
        相关资源
        最近更新 更多