我想知道从我的快速应用程序获取客户端IP地址的最佳方式是,如SOF和文档所示:req.ip
& req.connection.remoteAddress
。不知道有什么区别,哪一个是我应该使用的。获取客户端IP地址的最佳方法是req.ip或req.connection.remoteAddress?
0
A
回答
3
req.ip
会尽量同时考虑到由指示请求的来源(客户端)(代理服务器设置,尽管这只会做,如果trust proxy
设定明确启用帐户标题来解决实际的客户机IP地址)。
req.connection.remoteAddress
将包含发出请求的客户端的IP地址,在代理服务器的情况下,该代理服务器将是代理的IP地址,而不是代理服务器代表其转发请求的客户端的IP地址。
如果您使用的是将请求转发到Express服务器的逆向代理,则req.ip
和启用trust proxy
是最佳解决方案。否则,只是简单的req.ip
仍然会这样做。让用户IP
2
最好的办法是req.headers['x-forwarded-for'] || req.connection.remoteAddress;
这样var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
,因为可能是你将使用的中间件(或最常用的代理),出于安全原因,服务器(如CloudFlare的),如果你使用req.connection.remoteAddress
它会每次发送中间件服务器的IP地址,但是您可以一起使用x-forwarded-for标头和req.connection.remoteAddress
或req.ip
。
更多信息,请阅读有关x-forwarded-for http header
编辑
在下面的评论使用req.ip || req.connection.remoteAddress
最佳实践提及;因为即使您在没有代理的情况下使用应用程序,将来也可以将其与代理一起使用,并使用上述方法,您可以在不更改它的情况下使用应用程序
相关问题
- 1. 如何获取客户端IP地址
- 2. 如何获取客户端IP地址
- 3. 获取客户端IP地址的方法
- 4. Azure客户端IP地址
- 5. 客户端ip地址
- 6. 获取C端口客户端的IP地址
- 7. 在Sinatra获取客户的IP地址?
- 8. 获取客户端屏幕的用户IP地址
- 9. 如何获取客户端/用户的IP地址?
- 10. 获取客户端IP地址:端口(System.Runtime.Remoting.Channels)
- 11. 获取客户端IP地址和端口?
- 12. WCF:在客户端,获取端点IP地址
- 13. 如何在php中获取客户端ip地址和端口?
- 14. ServerSocket +客户端套接字 - 如何获取客户端的IP地址?
- 15. PHP |从客户端用户获取私有IP地址?
- 16. 获取请求的客户端的IP地址(SOAP消息)
- 17. 获取mule中的每个请求的客户端IP地址
- 18. 获取请求的客户端的IP地址expressjs
- 19. 从服务器获取客户端的IP地址
- 20. 如何在ASP.NET MVC中获取客户端的IP地址?
- 21. SQL Server 2000获取连接客户端的IP地址
- 22. 获取请求客户端的IP地址(Soap消息)
- 23. 使用NCAT获取客户端的IP地址
- 24. 在Clisp中获取连接客户端的IP地址
- 25. 获取客户端的IP地址对于webservice
- 26. 获取SOAP服务客户端的IP地址
- 27. 获取JSP中客户端的IP地址
- 28. 用Rails和Nginx获取客户端的真实IP地址?
- 29. 如何获取Glassfish中远程EJB客户端的IP地址?
- 30. Spring从RPC编码的Webservice客户端获取IP地址
我没有使用代理服务器,所以如果不使用我应该使用的代理服务器,以及如果将来使用代理服务器,我应该使用哪一个? (如果您可以编辑您的答案以适应我刚刚提出的问题,将有助于未来遇到同样问题的人员。) – guyforlowbro
@guyforlowbro,为清晰起见进行更新。 –
但要小心,据我了解,'x-forwaded-for'标头可能包含多个ip(如果您的快速应用程序位于代理之后)。所以我想坚持'req.ip'是要走的路 – lascort