????private?static?String?getRemoteIp(HttpServletRequest?request)?{
????????//x-forwarded-for:代表客戶端,也就是HTTP的請(qǐng)求端真實(shí)的IP,只有在通過了HTTP代理或者負(fù)載均衡服務(wù)器時(shí)才會(huì)添加該項(xiàng)
????????String?ip?=?request.getHeader("x-forwarded-for");
????????//Proxy-Client-IP和WL-Proxy-Client-IP:?只有在Apache(Weblogic?Plug-In?Enable)+WebLogic搭配下出現(xiàn),其中“WL”就是WebLogic的縮寫
????????//訪問路徑是:Client?->?Apache?WebServer?+?Weblogic?http?plugin?->?Weblogic?Instances
????????if?(ip?==?null?||?ip.length()?==?0?||?"unknown".equalsIgnoreCase(ip))?{
????????????ip?=?request.getHeader("Proxy-Client-IP");
????????}
????????if?(ip?==?null?||?ip.length()?==?0?||?"unknown".equalsIgnoreCase(ip))?{
????????????ip?=?request.getHeader("WL-Proxy-Client-IP");
????????}
????????if?(ip?==?null?||?ip.length()?==?0?||?"unknown".equalsIgnoreCase(ip))?{
????????????ip?=?request.getRemoteAddr();
????????}
//????????ip?=?"61.51.253.90";
//????????ip?=?"218.25.19.153";
????????//0:0:0:0:0:0:0:1:?IPV6的形式,win7下可能會(huì)出現(xiàn)
????????//獲取遠(yuǎn)程IP地址
?
????????return?"0:0:0:0:0:0:0:1".equals(ip)???"127.0.0.1"?:?ip;
????}這段代碼只能返回0:0:0:0:0:0:0:1
2 回答
已采納

逆光之羽
TA貢獻(xiàn)55條經(jīng)驗(yàn) 獲得超13個(gè)贊
ip是環(huán)回地址不是因?yàn)轫?xiàng)目是在本機(jī)啟動(dòng),然后又是本機(jī)去調(diào)用對(duì)應(yīng)接口造成的么?

言曌博客liuyanzhao_com
TA貢獻(xiàn)164條經(jīng)驗(yàn) 獲得超117個(gè)贊
//獲得物理ip public?static?String?getIpAddr(HttpServletRequest?request){ ????String?ipAddress?=?request.getHeader("x-forwarded-for"); ????if(ipAddress?==?null?||?ipAddress.length()?==?0?||?"unknown".equalsIgnoreCase(ipAddress))?{ ????????ipAddress?=?request.getHeader("Proxy-Client-IP"); ????} ????if(ipAddress?==?null?||?ipAddress.length()?==?0?||?"unknown".equalsIgnoreCase(ipAddress))?{ ????????ipAddress?=?request.getHeader("WL-Proxy-Client-IP"); ????} ????if(ipAddress?==?null?||?ipAddress.length()?==?0?||?"unknown".equalsIgnoreCase(ipAddress))?{ ????????ipAddress?=?request.getRemoteAddr(); ????????if(ipAddress.equals("127.0.0.1")?||?ipAddress.equals("0:0:0:0:0:0:0:1")){ ????????????//根據(jù)網(wǎng)卡取本機(jī)配置的IP ????????????InetAddress?inet=null; ????????????try?{ ????????????????inet?=?InetAddress.getLocalHost(); ????????????}?catch?(UnknownHostException?e)?{ ????????????????e.printStackTrace(); ????????????} ????????????ipAddress=?inet.getHostAddress(); ????????} ????} ????//對(duì)于通過多個(gè)代理的情況,第一個(gè)IP為客戶端真實(shí)IP,多個(gè)IP按照','分割 ????if(ipAddress!=null?&&?ipAddress.length()>15){?//"***.***.***.***".length()?=?15 ????????if(ipAddress.indexOf(",")>0){ ????????????ipAddress?=?ipAddress.substring(0,ipAddress.indexOf(",")); ????????} ????} ????return?ipAddress; }
添加回答
舉報(bào)
0/150
提交
取消