泽西远程 IP 地址无法正常工作

Jersey remote ip address not working correctly

我正在尝试检索进行 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 时,它 return 的 IP 是:10.155.0.152,但是当我 google 它说我的 IP 地址不同时。有什么方法可以return实际IP吗?

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

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

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

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