我想知道從我的快速應用程序獲取客戶端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. 始終從Servlet獲取客戶端IP地址:: 1的地址
- 5. PHP,獲得客戶端的IP地址
- 6. 客戶端的IP地址/ MAC地址
- 7. WebClient客戶端IP地址
- 8. Azure客戶端IP地址
- 9. 客戶端ip地址
- 10. 獲取C端口客戶端的IP地址
- 11. 在Sinatra獲取客戶的IP地址?
- 12. 獲取客戶端IP的客戶端
- 13. 獲取客戶端屏幕的用戶IP地址
- 14. 如何獲取客戶端/用戶的IP地址?
- 15. 跟蹤使用動態IP地址的移動客戶端的最佳方式
- 16. 獲取客戶端IP地址和端口?
- 17. 如何在php中獲取客戶端ip地址和端口?
- 18. WCF:在客戶端,獲取端點IP地址
- 19. 獲取客戶端IP地址:端口(System.Runtime.Remoting.Channels)
- 20. 如何在客戶端自動獲取客戶端的IP地址c
- 21. ServerSocket +客戶端套接字 - 如何獲取客戶端的IP地址?
- 22. PHP |從客戶端用戶獲取私有IP地址?
- 23. 獲取請求的客戶端的IP地址(SOAP消息)
- 24. 以Java獲取客戶端的每個IP地址的問題
- 25. 獲取mule中的每個請求的客戶端IP地址
- 26. 如何獲取我周圍的客戶端的IP地址
- 27. 獲取請求的客戶端的IP地址expressjs
- 28. 獲取SOAP服務客戶端的IP地址
- 29. 獲取客戶端的IP地址在WCF與wsDualHttpBinding
- 30. 如何獲取ring-clojure中的客戶端IP地址?
我沒有使用代理服務器,所以如果不使用我應該使用的代理服務器,以及如果將來使用代理服務器,我應該使用哪一個? (如果您可以編輯您的答案以適應我剛剛提出的問題,將有助於未來遇到同樣問題的人員。) – guyforlowbro
@guyforlowbro,爲清晰起見進行更新。 –
但要小心,據我瞭解,'x-forwaded-for'標頭可能包含多個ip(如果您的快速應用程序位於代理之後)。所以我想堅持'req.ip'是要走的路 – lascort