ForwardedHeaderFilter 不再支持 IPv6
ForwardedHeaderFilter no longer support IPv6
升级 spring 引导依赖项后,spring 引导应用程序仅适用于 ipv4,但对 ipv6 会抛出错误。该应用程序部署在 google 云 运行 服务上。当前版本:
<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
问题是由于 google 云 运行 服务不遵守 RFC7239 标准而不是由于 spring 引导。云 运行 无法用引号和方括号括起 IPv6 地址(根据 RFC7239 标准),因此 spring 将其解释为 IPv4 地址并在从地址解析端口号时失败。
这很奇怪,google云没有遵循标准。截至今天,Google 云团队表示他们正在努力解决问题,但不能保证预计到达时间。
您可以在此处跟踪状态:
https://issuetracker.google.com/issues/184230536?pli=1
升级 spring 引导依赖项后,spring 引导应用程序仅适用于 ipv4,但对 ipv6 会抛出错误。该应用程序部署在 google 云 运行 服务上。当前版本:
<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
问题是由于 google 云 运行 服务不遵守 RFC7239 标准而不是由于 spring 引导。云 运行 无法用引号和方括号括起 IPv6 地址(根据 RFC7239 标准),因此 spring 将其解释为 IPv4 地址并在从地址解析端口号时失败。
这很奇怪,google云没有遵循标准。截至今天,Google 云团队表示他们正在努力解决问题,但不能保证预计到达时间。
您可以在此处跟踪状态: https://issuetracker.google.com/issues/184230536?pli=1