泽西远程 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 路由器。
我正在尝试检索进行 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 路由器。