2016-04-27 12 views
1

REST呼び出しを呼び出すIPアドレスを取得しようとしています。JerseyリモートIPアドレスが正しく動作しない

私が持っているコードは次のとおりです。

import javax.servlet.http.HttpServletRequest; 
import javax.ws.rs.*; 
import javax.ws.rs.core.Context; 
import javax.ws.rs.core.MediaType; 

import org.json.JSONObject; 

@Path("/api") 
public class Endpoints { 

    @GET 
    @Path("/whoami") 
    @Produces(MediaType.APPLICATION_JSON) 
    public String testHeaders(@Context final HttpServletRequest request){ 

     final JSONObject json = new JSONObject(); 
     json.put("remoteaddr", request.getRemoteAddr()); 

     return json.toString(4); 
    } 

} 

アプリケーションはHerokuのhereに配備されています。あなたがapiに電話をかけるとipが返されます:10.155.0.152、いつ私がGoogleにIPアドレスが違うと言いますか。実際のIPを返す方法はありますか?

答えて

1

Herokuは、この種の情報を含むrequest headersの数を設定します。あなたの場合、あなたは望むでしょう:

request.getHeader("X-Forwarded-For"); 

これは、Herokuルータに接続しているクライアントの発信元IPアドレスを返します。

request.getRemoteAddr()から取得しているIPアドレスは、おそらくHerokuルータです。

関連する問題