你好。在node.js中,如果是http请求,我可以通过req.connection.remoteAddress获取远程地址。
那么,如果是https请求,如何获取它呢?我发现有req.socket.remoteAddress,但不确定是否正确。请给予建议。谢谢。
你好。在node.js中,如果是http请求,我可以通过req.connection.remoteAddress获取远程地址。
那么,如果是https请求,如何获取它呢?我发现有req.socket.remoteAddress,但不确定是否正确。请给予建议。谢谢。
看起来确实出了点问题。
从Node 0.4.7开始,似乎HTTP在以下情况下具有remoteAddress可用:
在https上,这两个都是未定义的,但是
确实有效。 但是它在http上不可用,所以您需要仔细检查。 我无法想象这种行为是有意的。
http.createServer
的请求中获取远程IP地址? - Redsandroconnection.remoteAddress
是可用的,只是在 Eclipse 调试器中没有列出。不知道为什么。 - Redsandro由于直接谷歌搜索“express js ip”会直接跳转到这里,所以这个问题与此有关。
Express 3.0.0 alpha 现在提供了一种新的方法来获取客户端请求的IP地址。只需使用 req.ip
即可。如果您正在进行一些代理操作,您可能会对 app.set("trust proxy", true);
和 req.ips
感兴趣。
我建议您阅读 Express Google Group 中的整个讨论。
var ip = req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress;
另外,req.headers['x-forwarded-for']
很容易被篡改,因此您需要一个配置正确的代理服务器。
在使用 req.headers['x-forwarded-for']
之前,最好先将 req.connection.remoteAddress
与已知代理服务器列表进行检查。