在试图弄清楚哪个给客户端(网络浏览器的)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 许可协议
在试图弄清楚哪个给客户端(网络浏览器的)IP 地址搞乱之后,答案是:
或者,如果您可以通过 --- 访问
req
wss.on('connection', (ws, req) => {})
:例如,您可以使用它来通过 GeoIP 定位用户连接的位置。
编辑:
如果您在 Nginx 反向代理(或与此相关的任何其他反向代理)后面运行 Node,您可能需要使用:
关于安全的注意事项:如果您的节点服务器可以直接使用以及通过反向代理使用,您可能希望在信任
remoteAddress
之前检查x-forwarded-for
。远程地址应该是你的反向代理的 IP。有人可以直接调用您的服务并欺骗x-forwarded-for
的可能性很小。