【发布时间】:2021-10-03 23:33:47
【问题描述】:
升级 Spring Boot 依赖后,Spring Boot 应用程序仅适用于 ipv4,但会引发 ipv6 错误。该应用程序部署在谷歌云运行服务上。当前版本:
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>2.0.3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
错误:
java.lang.IllegalArgumentException: Invalid IPv4 address: 2409:4042:2319:a971:c4db:4661:939c:443b
at org.springframework.web.util.UriComponentsBuilder.parseForwardedFor(UriComponentsBuilder.java:363)
at org.springframework.web.filter.ForwardedHeaderFilter$ForwardedHeaderExtractingRequest.<init>(ForwardedHeaderFilter.java:246)
at org.springframework.web.filter.ForwardedHeaderFilter.doFilterInternal(ForwardedHeaderFilter.java:149)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190)
我能够找到类似的问题,但没有找到任何解决方案。 https://github.com/spring-projects/spring-framework/issues/26748
【问题讨论】:
-
要检查一个 IP 是否是 v6,我使用以下快速和脏代码:
(InetAddress.getByName(ipStr) instanceof Inet6Address)。
标签: java spring spring-boot ipv6 x-forwarded-for