[英]jsp get ip address
什么是阻止某人投票兩次的最佳方式? 我如何獲得用戶的IP地址? 如果他們在大型網絡上怎么辦? 那個網絡上的每個人都會顯示相同的IP嗎? 謝謝
更新:request.getRemoteAddr()和request.getRemoteHost()返回服務器名稱,而不是客戶端的主機名和IP。 其他人有什么好主意嗎?
好吧,讓我們忘記投票兩次。 我只是想獲取用戶的IP地址? 我嘗試了request.getRemoteAddr()和request.getRemoteHost(),並認為我獲取服務器地址。 我有權訪問兩個獨立的網絡,並獲得相同的IP地址:(
在JSP中,使用request.getRemoteAddr() 。 這將返回以String形式發送請求的代理的IP地址。
此外, request.getRemoteHost()將嘗試獲取標准主機名。 但是,如果它無法解析名稱,則將返回IP地址,如getRemoteAddr()中所示 。
要獲取路由器/防火牆后面的客戶端的IP,您可以使用request.getHeader("X-FORWARDED-FOR")
。
X-Forwarded-For(XFF)HTTP標頭是用於識別通過HTTP代理或負載平衡器連接到Web服務器的客戶端的原始IP地址的事實標准。 http://en.wikipedia.org/wiki/X-Forwarded-For
但請記住,您和客戶之間的代理可以更改此值。 雖然它應該是正確的IP。
AFAIK防止第二次投票的唯一方法是通過身份驗證。 顯然,這並不總是可行的,因此你必須減少單個用戶投下大量選票的可能性。
Referer
和User-Agent
類的標頭,更難以偽造請求。 在JSP頁面中,只需使用以下表達式: ${pageContext.request.remoteAddr}
您可以使用request.getRemoteAddr()獲取IP地址。 如果網絡使用NAT路由器,則所有用戶都將獲得相同的地址
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.