2016-09-18 59 views
0

我有一個spring引導數據rest api。我試圖獲取請求的IP地址。我將一個HttpServletRequest bean注入到我創建的MediaEventHandler中,以在創建事件之前和之後處理。在創建方法之前,我調用了httpRequestServlet.getRemoteAddr()。spring引導HttpServletRequest getRemoteAddr()總是返回33.3.2.22

現在,當我堅持媒體實體,似乎填充從我的調用getRemoteAddr()獲得的IP。但是,無論我在本地機器上還是在aws上運行應用程序,IP地址始終爲33.3.2.22。

任何想法,爲什麼會這樣?

回答

0

您可能正在獲取默認網關的IP。看看這個:https://www.mkyong.com/java/how-to-get-client-ip-address-in-java/

//is client behind something? 
String ipAddress = request.getHeader("X-FORWARDED-FOR"); 
if (ipAddress == null) {  
    ipAddress = request.getRemoteAddr(); 
} 

還有不能保證你會得到真正的客戶端IP,但我相信這是你能做的最好的。

+0

嗨。是的,調用httpRequestServlet.getRemoteAddr()是在api(在服務器上)中進行的。我知道你說關於獲得相同的IP,因爲我使用同一個客戶端,但是...... 33.3.2.22肯定不是我的客戶端的IP。據我所知,我得到了我想要的,除了IP以某種方式顯示爲33.3.2.22而不是我的實際IP。任何想法,爲什麼它會不同? – gezinspace

+0

謝謝。這是一個計算領域,我的知識有點薄弱;我不會猜到這一點。我在工作,但是當我回到家時,我會向你確認情況是否如此。謝謝! :) – gezinspace