首页 > 其他分享 >获取请求ip

获取请求ip

时间:2024-02-05 11:01:58浏览次数:22  
标签:请求 ip request 获取 String userIp null forwarded

public static String getUserIp(HttpServletRequest request) {
   if (ObjectUtils.isEmpty(request)){
        return null;
    }
    // 获取客户端前台IP进行解析
    String userIp = request.getHeader("x-forwarded-for");
    if (userIp == null || userIp.isEmpty() || "unknown".equalsIgnoreCase(userIp)) {
        userIp = request.getHeader("Proxy-Client-IP");
    }
    if (userIp == null || userIp.isEmpty() || "unknown".equalsIgnoreCase(userIp)) {
        userIp = request.getHeader("WL-Proxy-Client-IP");
    }
    if (userIp == null || userIp.isEmpty() || "unknown".equalsIgnoreCase(userIp)) {
        userIp = request.getRemoteAddr();
    }
    return userIp;
}

/**
 * 从Request对象中获得客户端IP,处理了HTTP代理服务器和Nginx的反向代理截取了ip
 *
 * @param request
 * @return ip
 */
public static String getLocalIp(HttpServletRequest request) {
    String remoteAddr = request.getRemoteAddr();
    String forwarded = request.getHeader("X-Forwarded-For");
    String realIp = request.getHeader("X-Real-IP");
    String ip;
    if (realIp == null) {
        if (forwarded == null) {
            ip = remoteAddr;
        } else {
            ip = remoteAddr + "/" + forwarded.split(",")[0];
        }
    } else {
        if (realIp.equals(forwarded)) {
            ip = realIp;
        } else {
            if (forwarded != null) {
                forwarded = forwarded.split(",")[0];
            }
            ip = realIp + "/" + forwarded;
        }
    }
    return ip;
}

标签:请求,ip,request,获取,String,userIp,null,forwarded
From: https://blog.51cto.com/u_16253752/9601782

相关文章

  • c#http请求
    一、HttpWebRequestpublicstringPost(stringurl,stringdata){StreamdataStream=null;HttpWebRequestrequest=null;HttpWebResponseresponse=null;StreamReaderreader=null;......
  • 阿里二面:SpringBoot可以同时处理多少个请求?当场懵了。。。。
    SpringBoot以其简洁高效的开发方式和强大的内嵌容器特性,为开发者提供了构建高性能后端服务的便利。然而,当面临高并发场景时,理解并合理配置SpringBoot应用以达到最佳的并发处理能力至关重要。在SpringBoot中,应用程序对HTTP请求的并发处理主要依赖于内嵌的Servlet容器(如Tomcat)。接......
  • 联通光猫管理员账户密码获取
    最近,本人家里的管理员帐户密码变成了动态密码。摸索了一番后,总结如下经验:登录普通帐户利用光猫背后的密码登录普通帐户。获取管理员密码登录普通帐户之后,打开backupsettings.conf。前面的IP地址可能根据情况有所改变。之后会下载一个XML格式的文本文件。打开文件后寻找......
  • Multipass使用中遇到的问题与相应的解决方案(maybe)
    00重启后遇到下边的情况:FailureretrievinginstancesGoogle了一下解决方案,在https://github.com/canonical/multipass/issues/2223这里找到了答案。在终端里输入Get-CimInstanceWin32_ComputerSystem|Select-Object-ExpandPropertyHypervisorPresent出现True,然后再......
  • SharePoint Online 使用Ajax请求超过5000条数据的列表
    前言相信大家都遇到过SharePointOnline取数据的时候,列表数据超过5000阈值的情况,下面,我们介绍下如何利用分页获取超过5000条数据的列表。正文下面是源代码,主要有两个地方要注意,一个是最开始请求top=5000,告诉请求我们要分页。第二个就是data.d.next,如果这个返回......
  • 文件上传错误:Processing of multipart/form-data request failed. Stream ended unexp
    问题描述Processingofmultipart/form-datarequestfailed.Streamendedunexpectedly不通过网关,直接在本地debug是可以上传成功的,线上环境通过网关上传则会导致此错误,可能是网关修改了请求内容。解决方式前端将文件转换为base64字符串,服务端接收到再转换为字节数组......
  • SharePoint Online Modern Script Editor WebPart
    前言最近在使用SharePointOnline的时候,发现一个很好用的WebPart,大家有兴趣可以试一试。正文这个WebPart有点类似以前的内容编辑器,使用起来非常简单,编辑页面直接插入就可以了,如下图:点击Editormarkup,在EditHTMLCode里面可以添加HTML,如下图:当然,这......
  • BIP 用代码对前端表格数据进行过滤显示
    viewModel.getGridModel().on("beforeSetDataSource",function(data){constindex=data.findIndex((obj)=>obj.year==="2024");if(index!==-1){data.splice(index,1);}//console.log(data);}); viewModel.g......
  • NOIP 图论[ZHX]
    基础定义图图\(G\)是一个有序二元组\((V,E)\),其中\(V\)成为点集(\(Vertices\)\(Set\)),\(E\)称为边集(\(Edges\)\(set\))。有向边、无向边如果边有方向,那么得到的图称为有向图。在有向图中,与一个节点相关联的有出边和入边之分。相反,边没有方向的图称为无向图,即所有边都......
  • Teamcenter AWC开发:调用SOA时,报错No SOA service for Bom-2008-06-StructureManagemen
    1、报错:2、分析:我一直在纠结,究竟是SOA接口报错。还是没有这个SOA接口服务。因为在AWC生成的SOA文档,是有这个接口和服务的。后来明白了。如果是SOA接口报错。在网络中看到这个接口是有响应的。也就是有返回的。 但是NoSOAservice报错,网络中,看到接口时没有返回的。 3......