From 94d15e04ac93d58002f880ff5d0f68d9be0de630 Mon Sep 17 00:00:00 2001 From: TheWhiteDog9487 Date: Fri, 12 Dec 2025 10:43:46 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=B8=8D=E8=83=BD=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE=E8=AF=BB=E5=8F=96=E8=AF=B7=E6=B1=82=E5=A4=B4=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E6=97=A0=E6=B3=95=E8=BF=94=E5=9B=9E=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E7=9A=84IP=E5=92=8CISO3166=E7=9A=84=E9=97=AE=E9=A2=98=20?= =?UTF-8?q?=E4=B9=8B=E5=89=8D=E7=9A=84=E7=89=88=E6=9C=AC=E6=89=80=E6=9C=89?= =?UTF-8?q?=E7=9A=84=E8=AF=B7=E6=B1=82=E5=A4=B4=E9=83=BD=E6=98=AF=E5=BC=BA?= =?UTF-8?q?=E5=88=B6=E5=B0=8F=E5=86=99=EF=BC=8C=E7=8E=B0=E5=9C=A8=E5=8F=98?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E5=86=99=E6=B7=B7=E5=90=88=EF=BC=8C=E5=B0=B1?= =?UTF-8?q?=E6=8C=BA=E6=91=B8=E4=B8=8D=E7=9D=80=E5=A4=B4=E8=84=91=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../thewhitedog9487/WebAPI/Controller/IP.java | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/IP.java b/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/IP.java index e6bd2df..abaf127 100644 --- a/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/IP.java +++ b/src/main/java/xyz/thewhitedog9487/WebAPI/Controller/IP.java @@ -9,6 +9,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -38,25 +39,21 @@ class IP { examples = @ExampleObject(value = "78.141.226.247")), description = "成功获取到IP地址,内容为纯文本格式的IP地址") @GetMapping("/ip") - ResponseEntity GetIP(@RequestHeader Map HttpHeader, HttpServletRequest Request) { - if ( HttpHeader.get("CF-Connecting-IP".toLowerCase() ) instanceof String IP) { - /* - ↑ 如果成功完成instanceof模式匹配,那么模式变量一定非空 - 相当于是: - if ( HttpHeader.get("CF-Connecting-IP".toLowerCase() ) != null ) { - String IP = HttpHeader.get( "CF-Connecting-IP".toLowerCase() ); } - */ - return new ResponseEntity<>(IP, - MultiValueMap.fromSingleValue(Map.of("Content-Type", "text/plain;charset=UTF-8")), + ResponseEntity GetIP(@RequestHeader("CF-COnnecting-IP") String Header_CFConnectingIP, + @RequestHeader("X-Forwarded-For") String Header_XForwardedFor, + HttpServletRequest Request) { + if (Header_CFConnectingIP != null) { + return new ResponseEntity<>(Header_CFConnectingIP, + new HttpHeaders(MultiValueMap.fromSingleValue(Map.of("Content-Type", "text/plain;charset=UTF-8"))), HttpStatus.OK); } - else if (HttpHeader.get("X-Forwarded-For".toLowerCase()) instanceof String IP) { - IP = IP.split(",")[0].trim(); - return new ResponseEntity<>(IP, - MultiValueMap.fromSingleValue(Map.of("Content-Type", "text/plain;charset=UTF-8")), + else if (Header_XForwardedFor != null) { + Header_XForwardedFor = Header_XForwardedFor.split(",")[0].trim(); + return new ResponseEntity<>(Header_XForwardedFor, + new HttpHeaders(MultiValueMap.fromSingleValue(Map.of("Content-Type", "text/plain;charset=UTF-8"))), HttpStatus.OK); } else { return new ResponseEntity<>(Request.getRemoteAddr(), - MultiValueMap.fromSingleValue(Map.of("Content-Type", "text/plain;charset=UTF-8")), + new HttpHeaders(MultiValueMap.fromSingleValue(Map.of("Content-Type", "text/plain;charset=UTF-8"))), HttpStatus.OK); } } @Operation(summary = "获取请求客户端的ISO 3166-1 alpha-2国家代码", description = """ @@ -78,13 +75,13 @@ class IP { examples = { @ExampleObject(value = "未找到CF-IPCountry头部") } ), description = "未找到CF-IPCountry头部,内容为纯文本格式的错误信息") } ) @GetMapping("iso3166") - ResponseEntity GetISO3166(@RequestHeader Map HttpHeader) { - if (HttpHeader.get("CF-IPCountry".toLowerCase()) instanceof String CountryCode) { - return new ResponseEntity<>(CountryCode, - MultiValueMap.fromSingleValue(Map.of("Content-Type", "text/plain;charset=UTF-8")), + ResponseEntity GetISO3166(@RequestHeader("CF-IPCountry") String Header_CFIPCountry) { + if (Header_CFIPCountry != null) { + return new ResponseEntity<>(Header_CFIPCountry, + new HttpHeaders(MultiValueMap.fromSingleValue(Map.of("Content-Type", "text/plain;charset=UTF-8"))), HttpStatus.OK); } else { return new ResponseEntity<>("未找到CF-IPCountry头部", - MultiValueMap.fromSingleValue(Map.of("Content-Type", "text/plain;charset=UTF-8")), + new HttpHeaders(MultiValueMap.fromSingleValue(Map.of("Content-Type", "text/plain;charset=UTF-8"))), HttpStatus.NOT_FOUND); } } }