From dddb3a04f7101901ac6c432c94929cdd29f46227 Mon Sep 17 00:00:00 2001 From: rays <1615175118@qq.com> Date: Wed, 1 Dec 2021 17:22:39 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.1.6=E3=80=91=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E8=AF=B7=E6=B1=82IP=E7=9A=84=E9=80=BB=E8=BE=91=E4=B8=AD?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E8=87=AA=E5=AE=9A=E4=B9=89=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kernel/rule/util/HttpServletUtil.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/HttpServletUtil.java b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/HttpServletUtil.java index 21d891be2..c7bd6567f 100644 --- a/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/HttpServletUtil.java +++ b/kernel-a-rule/src/main/java/cn/stylefeng/roses/kernel/rule/util/HttpServletUtil.java @@ -56,6 +56,11 @@ public class HttpServletUtil { */ private static final String LOCAL_IP = "127.0.0.1"; + /** + * Nginx代理自定义的IP名称 + */ + private static final String AGENT_SOURCE_IP = "Agent-Source-Ip"; + /** * 本机ip地址的ipv6地址 */ @@ -73,7 +78,7 @@ public class HttpServletUtil { * @date 2020/10/15 17:48 */ public static HttpServletRequest getRequest() { - ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); if (requestAttributes == null) { throw new ServiceException(ServletExceptionEnum.HTTP_CONTEXT_ERROR); } else { @@ -88,7 +93,7 @@ public class HttpServletUtil { * @date 2020/10/15 17:48 */ public static HttpServletResponse getResponse() { - ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); if (requestAttributes == null) { throw new ServiceException(ServletExceptionEnum.HTTP_CONTEXT_ERROR); } else { @@ -108,7 +113,7 @@ public class HttpServletUtil { if (ObjectUtil.isEmpty(request)) { return LOCAL_IP; } else { - String remoteHost = ServletUtil.getClientIP(request); + String remoteHost = ServletUtil.getClientIP(request, AGENT_SOURCE_IP); return LOCAL_REMOTE_HOST.equals(remoteHost) ? LOCAL_IP : remoteHost; } } @@ -151,7 +156,7 @@ public class HttpServletUtil { HttpRequest http = HttpUtil.createGet(String.format(ipGeoApi, ip)); http.header(requestApiHeader, appCodeSymbol + " " + ipGeoAppCode); resultJson = http.timeout(3000).execute().body(); - resultJson = String.join("", (List) JSONPath.read(resultJson, jsonPath)); + resultJson = String.join("", (List)JSONPath.read(resultJson, jsonPath)); } } catch (Exception e) { log.error("根据ip定位异常,具体信息为:{}", e.getMessage()); @@ -192,8 +197,7 @@ public class HttpServletUtil { * @date 2021/2/22 22:37 */ public static Boolean getNormalRequestFlag(HttpServletRequest request) { - return request.getHeader("Accept") == null - || request.getHeader("Accept").toLowerCase().contains("text/html"); + return request.getHeader("Accept") == null || request.getHeader("Accept").toLowerCase().contains("text/html"); } /** @@ -206,8 +210,7 @@ public class HttpServletUtil { * @date 2021/2/22 22:37 */ public static Boolean getJsonRequestFlag(HttpServletRequest request) { - return request.getHeader("Accept") == null - || request.getHeader("Accept").toLowerCase().contains("application/json"); + return request.getHeader("Accept") == null || request.getHeader("Accept").toLowerCase().contains("application/json"); } }