如何获取Node.js中的WebSocket(websockets / ws)库的客户端IP地址?
我找不到客户端对象上的客户端IP参数。
在弄清楚哪一个客户端(networking浏览器)的IP地址有点麻烦之后,答案是:
ws._socket.remoteAddress
或者,如果您有通过wss.on('connection', (ws, req) => {})
访问req
:
req.connection.remoteAddress;
例如,您可以使用GeoIP查找用户所连接的位置。
编辑:
如果您在Nginx反向代理(或任何其他反向代理)背后运行Node,则可能需要使用:
req.headers['x-forwarded-for'] || req.connection.remoteAddress
有关安全性的说明:如果您的节点服务器可以直接使用,也可以通过反向代理服务器使用,则可能希望在信任x-forwarded-for
之前检查remoteAddress
。 远程地址应该是您的反向代理的IP。 有人很可能直接打电话给你的服务,并欺骗x-forwarded-for
。
从打印套接字对象中的键中得到这个结果:
> ws._socket.address() { port: 8081, family: 2, address: '127.0.0.1' } > ws._socket.remoteAddress '74.125.224.194' > ws._socket.remotePort 41435
我没有任何文档,所以我不确定在不同的版本中支持多好。/