Can I access a cookie from Socket.io?

前端 未结 4 1789
孤街浪徒
孤街浪徒 2020-12-05 12:55

I want to set some user information in a cookie and be able to access it on connection, is this possible?

相关标签:
4条回答
  • 2020-12-05 13:32

    I got it, this works:

    client.request.headers.cookie
    
    0 讨论(0)
  • 2020-12-05 13:36

    client.request.headers.cookie leads to race conditions as the cookie always points to the last logged in user.

    Please see: Socket.IO Authentication.

    0 讨论(0)
  • 2020-12-05 13:39

    After looking to the engine.io source code you can set cookies using:

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

    this code could conflict with the engine.io code that set the sid cookie. as both HTTP/1.1 and HTTP/2 headers are case-insensitive and engine.io use 'Set-Cookie' in the headers object adding a lowercase object name 'set-cookie' would avoid this problem.

    0 讨论(0)
  • 2020-12-05 13:49

    Using Socket.IO 0.8.7, you can access request headers via:

    socket.handshake.headers

    You can find more detail on this at https://github.com/LearnBoost/socket.io/wiki/Authorizing

    0 讨论(0)
提交回复
热议问题