Jersey远程IP地址无法正常工作

时间:2016-04-27 18:16:58

标签: java rest heroku jersey-2.0

我正在尝试检索调用REST调用的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,当我谷歌时,它说我的IP地址是不同的。有没有办法返回实际的IP?

1 个答案:

答案 0 :(得分:1)

Heroku设置了包含此类信息的request headers个数。在您的情况下,您需要:

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

这将返回连接到Heroku路由器的客户端的原始IP地址。

您从request.getRemoteAddr()获取的IP地址可能是Heroku路由器。