Java Restlet查找源IP
我想找出请求来自我的资源的源IP地址。 我有下面两种方法来检索它Java Restlet查找源IP,java,restlet,Java,Restlet,我想找出请求来自我的资源的源IP地址。 我有下面两种方法来检索它 String ipAddress = (Series) Request.getCurrent().getAttributes(). get("org.restlet.http.headers").getFirstValue("X-Forwarded-For"); String ip = ipAddress.split(" ")[0]; 及 List ipsList=Request.getC
String ipAddress = (Series) Request.getCurrent().getAttributes().
get("org.restlet.http.headers").getFirstValue("X-Forwarded-For");
String ip = ipAddress.split(" ")[0];
及
List ipsList=Request.getCurrent().getClientInfo().getForwardedAddresses();
字符串ip=ipsList.get(ipsList.size()-1);
两个问题:
你需要告诉我们你所说的“正确”和“更好”是什么意思。更好-如果它们都能工作,那么在效率/资源/运行时方面哪一个更好我认为最好使用restletapi而不是头的值。Restlet从头文件中提取这样的提示,并允许您通过API访问它。因此,在您的情况下,我更喜欢第二种方法;-)希望它能帮助你!我也倾向于第二个。然而,我不能100%确定它是否有效。默认情况下,此功能未启用。请参阅类的javadocs
ClientInfo
。如果在独立模式下使用Restlet,则可以执行以下操作:server.getContext().getParameters().add(“useForwardedForHeader”,“true”)代码>(请参阅)。希望能有帮助
List<String> ipsList = Request.getCurrent().getClientInfo().getForwardedAddresses();
String ip = ipsList.get(ipsList.size() - 1);