如何使用 Node.js 中的 WebSocket (websockets/ws) 库获取客户端 IP 地址?

新手上路,请多包涵

我在客户端对象上找不到客户端 IP 参数。

原文由 Grringo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
1 个回答

在试图弄清楚哪个给客户端(网络浏览器的)IP 地址搞乱之后,答案是:

 ws._socket.remoteAddress

或者,如果您可以通过 --- 访问 req wss.on('connection', (ws, req) => {})

 req.socket.remoteAddress

例如,您可以使用它来通过 GeoIP 定位用户连接的位置。

编辑:

如果您在 Nginx 反向代理(或与此相关的任何其他反向代理)后面运行 Node,您可能需要使用:

 req.headers['x-forwarded-for'] || req.socket.remoteAddress

关于安全的注意事项:如果您的节点服务器可以直接使用以及通过反向代理使用,您可能希望在信任 remoteAddress 之前检查 x-forwarded-for 。远程地址应该是你的反向代理的 IP。有人可以直接调用您的服务并欺骗 x-forwarded-for 的可能性很小。

原文由 Chris Nolet 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题