我正在尝试检索调用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?
答案 0 :(得分:1)
Heroku设置了包含此类信息的request headers个数。在您的情况下,您需要:
request.getHeader("X-Forwarded-For");
这将返回连接到Heroku路由器的客户端的原始IP地址。
您从request.getRemoteAddr()
获取的IP地址可能是Heroku路由器。