当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud网关无效的IPv4地址

胡玉书
2023-03-14

我有以下设置:

    < li >端口8080上的Spring Cloud网关 < li >路由/用户到端口9000上的Spring Rest API(称为用户) < li >路由/字符到端口9001上的Spring Rest API(称为字符) < li >端口8090上的Spring Cloud配置服务器

网关和两个RestAPI应用程序连接到云配置以拉取配置。应用程序本身可以正确启动,并可以通过各自的端口使用。我通过调用/swagger ui测试了这一点。html,工作正常。

当调用/执行器/网关/路由时,我会得到网关的路由列表,看起来不错。

对于我设置的所有四个应用程序:

server:
  address: 0.0.0.0
  port: 8080 # ports are adjusted for each service
  forward-headers-strategy: framework

当我不使用 Spring 云配置服务器时,网关运行良好。现在,每当调用 /user/swagger-ui.html 或 /character/swagger-ui.html 时,我都会收到以下错误

java.lang.IllegalArgumentException: Invalid IPv4 address: 0:0:0:0:0:0:0:1:60979
    at org.springframework.web.util.UriComponentsBuilder.parseForwardedFor(UriComponentsBuilder.java:363) ~[spring-web-5.3.8.jar:5.3.8]
    at org.springframework.web.filter.ForwardedHeaderFilter$ForwardedHeaderExtractingRequest.<init>(ForwardedHeaderFilter.java:246) ~[spring-web-5.3.8.jar:5.3.8]
    at org.springframework.web.filter.ForwardedHeaderFilter.doFilterInternal(ForwardedHeaderFilter.java:149) ~[spring-web-5.3.8.jar:5.3.8]
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar:5.3.8]

尝试将前向标头策略更改为本机,这也没有帮助。我深入研究了UriComponentBuilder并设置了一些断点来调查它们中的变量,我怀疑request.headers[“转发”]是它失败的原因:

它试图解析不是IPv4地址的变量中的“for”,因此失败了。在使用Spring Cloud Config之前,使用“server.address”强制ipv4似乎有效,但是现在不行了。有没有人遇到过同样的问题,知道我应该怎么做才能摆脱这个异常?

因此,总的来说,路由本身似乎是有效的,因为它路由到正确的应用程序。应用程序本身(本例中是用户)抛出错误,而不是网关。

共有1个答案

游勇军
2023-03-14

问题已解决

Spring gateway版本3.0.4

你可以从中得到

org . spring framework . cloud:spring-cloud-dependencies:2020 . 0 . 4

 类似资料:
  • 本文向大家介绍SpringCloud网关Gateway架构解析,包括了SpringCloud网关Gateway架构解析的使用技巧和注意事项,需要的朋友参考一下 网关是介于客户端和服务器端之间的中间层,所有的外部请求都会先经过 网关这一层。也就是说,API 的实现方面更多的考虑业务逻辑,而安全、性能、监控可以交由 网关来做,这样既提高业务灵活性又不缺安全性,典型的架构图如图所示: 安全 ,只有网关系

  • 问题内容: 在我的android设备中,我试图找到其IP地址(IPV4)。 如果我执行以下代码 该代码给了我127.0.0.1。 我想获得实际的IP198.168.xx.xx。 (在“我的电脑”中,相同的代码为我提供了实际的IP。) 问题答案: 授予权限 还添加mainfest。

  • 关于使用提供的代码生成IP地址的链接。 我已经实现了获取IP地址的确切代码,但它同时提供了IPv4和IPv6地址。下面是产生的价值。 (已编辑IPv6地址) 有没有办法只获取IPv4值而不同时获取两者?

  • 本文向大家介绍SpringCloud网关组件zuul实例解析,包括了SpringCloud网关组件zuul实例解析的使用技巧和注意事项,需要的朋友参考一下 1.引入如下依赖 2.启动类添加如下注解 @EnableZuulProxy 原先访问商品服务如下: 通过网关访问:将访问地址改为网关地址,并添加商品服务的服务名称如下: 即完成统一完成由网关进行发送 同时可以在启动类中添加自定义路由映射 这样就

  • 问题内容: 我有使用地址的应用程序(它存储它们的时间很长),因此它只了解地址。 可以将地址转换为with 吗? 问题答案: 尽管IPv4地址范围具有等效的IPv6,但是您不能将所有IPv6地址都转换为IPv4-IPv6地址比IPv4地址更多。 解决此问题的唯一明智的方法是更新您的应用程序,以便能够理解和存储IPv6地址。