如何使用Socket.io获取请求的HTTP头?

时间:2012-11-26 20:55:30

标签: http express socket.io

我有一个在Nginx后面运行的Express应用程序,所以当我尝试获取用户的IP时,我总是得到127.0.0.1而不是真实的,这是由X-Real-IP标头中的Nginx设置的。我如何获得此标题?有没有办法让通过 socket对象?

代码基本上就是这样:

io.sockets.on( 'connection', function( socket ) {

    var ip = /* ??? */;

    /* do something with the IP…

       … some stuff …

     */
});

1 个答案:

答案 0 :(得分:18)

要在NGINX或其他代理后面运行时获取IP:

var ip = req.header('x-forwarded-for') || req.connection.remoteAddress;

或Socket.IO

client.handshake.headers['x-forwarded-for'] || client.handshake.address.address;

来自:http://www.hacksparrow.com/node-js-get-ip-address.html