Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果是HTTPS请求,如何在node.js中查找远程地址?_Https_Node.js_Ip - Fatal编程技术网

如果是HTTPS请求,如何在node.js中查找远程地址?

如果是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上,这两个都是未定义的,但是 请求连接套接字远程地址

嗨。在node.js中,如果是http请求,我可以在req.connection.remoteAddress获取remoteAddress


那么,如果https请求,如何获取它呢?我发现有req.socket.remoteAddress,但我不确定。请给我一些建议。谢谢。

看来确实有些东西很奇怪/坏了。 从节点0.4.7开始,http似乎在以下位置具有可用的remoteAddress:

  • 请求连接远程地址
  • 请求套接字远程地址
在https上,这两个都是未定义的,但是

  • 请求连接套接字远程地址
确实有效。 不过,这个在http上不可用,所以您需要仔细检查。 我无法想象这种行为是故意的。

因为谷歌的“ExpressJSIP”直接指向这里,这在某种程度上是相关的

现在提供了一种为客户端请求检索IP地址的新方法。 简单使用。如果你在玩代理游戏,你可能会对app.set感兴趣(“trust proxy”,true)

我建议你把整个讨论都读一遍


请注意,有时您可以在请求头['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;