簡體   English   中英

如何在JSP代碼中獲取所請求站點的IP地址?

[英]How can I get IP address of the requested site in JSP code?

我的任務是確定客戶端和Web服務器之間是否存在NAT。 我正在使用這個算法:

  1. 用戶請求網頁
  2. JSP代碼運行並獲取所請求站點的IP
  3. JSP代碼獲取服務器的內部IP
  4. 我比較兩個IP,如果它們是相同的 - 它意味着沒有NAT

我的問題是:如何在JSP代碼中獲取所請求站點的IP地址? 我嘗試使用request.getRequestURL() ,但它返回了domen的網站名稱。 此外,我試圖獲取請求的標題主機 ,但它既不起作用。 而且,我有沒有DNS服務的特定服務器,這就是為什么我無法獲得DNS名稱的IP。

或者任何想法如何確定客戶端和服務器之間是否存在NAT?

嘗試HttpServletRequest.getRemoteAddr()

說明說:

返回發送請求的客戶端或最后一個代理的Internet協議(IP)地址。 對於HTTP servlet,與CGI變量REMOTE_ADDR的值相同。

注意 :這只會獲取(或嘗試)客戶端IP地址。 不是客戶端請求的服務器。

JSP代碼不能,因為它在服務器上運行。

我假設您實際上是指JSP創建的頁面中的Javascript代碼,但我認為不允許不受信任的Javascript查找瀏覽器的IP地址或主機名。

(這里是用於獲取在JavaScript客戶端 IP地址一招,但它涉及發送到遠程服務器的請求......對你來說遠程服務器只能提供NAT的地址。另一個技巧是運行Java applet,但我懷疑它也會遇到沙箱限制......除非用戶的瀏覽器信任applet。)

簡而言之,我不認為服務器通常可以查明客戶端的IP地址是否為NAT。


請注意,如果您確實找到NATed地址后面的真實IP地址,它可能對您沒有任何用處。 可能是IP地址不可路由(因為它在私有范圍內和/或防火牆后面),並且在任何公共DNS服務器中都沒有名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM