如果是HTTPS请求,如何findnode.js中的远程地址?
HI。 在node.js中,如果是http请求,我可以通过req.connection.remoteAddress获得remoteAddress,
那么,如何获取https请求呢? 我发现有req.socket.remoteAddress,但我不确定。 请指教。 谢谢。
看起来确实有些奇怪/破碎。 从节点0.4.7开始,似乎http上有remoteAddress:
- req.connection.remoteAddress
- req.socket.remoteAddress
在https上,这两个都是未定义的,但是
- req.connection.socket.remoteAddress
确实有效 虽然这不是在http上可用,所以你需要仔细检查。 我无法想象这种行为是故意的。
由于使用Google的“快速js ip”直接指向这里,这有点相关。
Express 3.0.0 alpha现在提供了一种为客户端请求检索IP地址的新方法。 只需使用req.ip
如果你正在做一些代理jiggery-pokery,你可能会对app.set("trust proxy", true);
感兴趣app.set("trust proxy", true);
和req.ips
。
我build议您阅读Express Google小组的全部讨论。
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress;
请注意,有时您可以在req.headers ['x-forwarded-for']中获取多个IP地址,特别是在使用访问您的服务器的移动电话(wifi和运营商数据)时。
req.headers['x-forwarded-for']
很容易被操纵,所以你需要一个正确configuration的代理服务器。
在使用req.headers['x-forwarded-for']
之前,最好检查req.connection.remoteAddress对已知代理服务器的列表。