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

mur*_*lai 5 ip https node.js

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

那么,如果https请求如何获得它?我发现有req.socket.remoteAddress但我不确定.请指教.谢谢.

小智 17

看起来确实有些奇怪/破碎.从节点0.4.7开始,http似乎具有remoteAddress:

  • req.connection.remoteAddress
  • req.socket.remoteAddress

在https上,这两个都是未定义的,但是

  • req.connection.socket.remoteAddress

确实有效.但是这个不适用于http,所以你需要仔细检查.我无法想象这种行为是故意的.

  • 跳过 - "connection.remoteAddress"_is_可用,它只是没有在Eclipse调试器中列出.不知道为什么. (2认同)

bus*_*ens 9

由于谷歌搜索"表达js ip"直接指向这里,这在某种程度上是相关的.

Express 3.0.0 alpha现在提供了一种检索客户端请求的IP地址的新方法.简单地使用req.ip.如果你正在做一些代理jiggery-pokery你可能会感兴趣app.set("trust proxy", true);req.ips.

我建议您阅读Express Google Group中的整个讨论.


Edm*_*ake 6

var ip = req.headers['x-forwarded-for'] || 
     req.connection.remoteAddress || 
     req.socket.remoteAddress ||
     req.connection.socket.remoteAddress;
Run Code Online (Sandbox Code Playgroud)

请注意,有时您可以在 req.headers['x-forwarded-for'] 中获得多个 ip 地址,特别是在使用手机访问您的服务器(wifi 和运营商数据)时。