我在zuul网关后面有一个spring boot 2.0.2 Web应用程序。我的应用程序使用spring hateoas链接。我的应用程序也有上下文路径设置让我们说xxx。
当通过zuul网关进行查询时,hateoas链接变为无效。原因如下: 让我们说一个电话https://localhost/serviceName/service-context-path/path。我要求我的heteoas链接成为ie https://localhost/serviceName/service-context-path/path/ 但是,这些链接变为:https://localhost/service-context-path/path/。
我已经进行了搜索并发现堆栈溢出此链接(HATEOAS paths are invalid when using an API Gateway in a Spring Boot app) 实际上,默认情况下add-proxy-headers会发送X-FORWARDED-PREFIX(allong host等),我猜这是社区有意解决这个问题。但是......当我调试我的应用程序时,我到达了这个方法org.springframework.web.servlet.support.ServletUriComponentsBuilder#fromContextPath,java doc部分如下: 从4.3.15开始,此方法将contextPath替换为值“X-Forwarded-Prefix”而不是前置,从而与{@code ForwardedHeaderFiller}对齐。
这意味着以下内容,当存在X-FORWARDED-PREFIX时,应用程序上下文将替换为zuul的前缀,即serviceName。我想uul开发人员不能知道应用程序上下文,另一方面,org.springframework.web.servlet.support.ServletUriComponentsBuilder#fromContextPath与相应的规范兼容。
问题:我该如何进行?我确实希望我的hateoas链接在我使用zuul时是正确的
答案 0 :(得分:0)
我的问题是这里没有解决方案。 正确的方法是避免使用zuul并转到Spring云网关。