如果是HTTPS请求,如何在node.js中查找远程地址?
嗨。在node.js中,如果是http请求,我可以在req.connection.remoteAddress获取remoteAddress如果是HTTPS请求,如何在node.js中查找远程地址?,https,node.js,ip,Https,Node.js,Ip,嗨。在node.js中,如果是http请求,我可以在req.connection.remoteAddress获取remoteAddress 那么,如果https请求,如何获取它呢?我发现有req.socket.remoteAddress,但我不确定。请给我一些建议。谢谢。看来确实有些东西很奇怪/坏了。 从节点0.4.7开始,http似乎在以下位置具有可用的remoteAddress: 请求连接远程地址 请求套接字远程地址 在https上,这两个都是未定义的,但是 请求连接套接字远程地址
那么,如果https请求,如何获取它呢?我发现有req.socket.remoteAddress,但我不确定。请给我一些建议。谢谢。看来确实有些东西很奇怪/坏了。 从节点0.4.7开始,http似乎在以下位置具有可用的remoteAddress:
- 请求连接远程地址
- 请求套接字远程地址
- 请求连接套接字远程地址
请注意,有时您可以在请求头['x-forwarded-for']中获得多个ip地址,特别是在使用手机访问服务器(wifi和运营商数据)时。以及
req头['x-forwarded-for']
很容易操作,因此您需要一个正确配置的代理服务器
在使用
req.headers['x-forwarded-for']
之前,最好对照已知代理服务器列表检查req.connection.remoteAddress
。您是在使用HTTP服务器还是在发出HTTP请求?请看这里:因此,当HTTP请求传入时,我想知道远程IP地址。它不会像通常那样出现在req.connection上。我看到有req.socket.remoteAddress,但不确定它是否是我应该使用的地址。:)您确定发出了正确的HTTPS ajax请求吗?这些请求在0.6.x上都不可用。如何从http.createServer上的请求中获取远程ip地址?跳过该连接。remoteAddress可用,只是没有在Eclipse调试器中列出。不知道为什么。我尝试了req.connection.socket.remoteAddress,是的,它正在使用https,这似乎很奇怪。需要考虑的其他标题有:“x-cluster-client-ip”(rackspace LB)和“x-real-ip”(默认的nginx代理/fcgi)
var ip = req.headers['x-forwarded-for'] ||
req.connection.remoteAddress ||
req.socket.remoteAddress ||
req.connection.socket.remoteAddress;