Spring Cloud Gateway - 基于标题的重定向

时间:2018-04-30 11:03:42

标签: spring-cloud spring-cloud-gateway

只是使用Spring Cloud Gateway,我目前使用以下路线代理远程站点(在Kotlin中定义):

@GetMapping("/proxgoo/**")
@Throws(Exception::class)
fun proxyPath(proxy: ProxyExchange<*>): ResponseEntity<*> {
    val path = proxy.path("/proxgoo/")
    return proxy.uri(proxiedRemote.toString() + "/" + path).get()
}

哪个很好用。如果我们将proxiedRemote设置为https://www.google.com,这将很有效,直到我们尝试加载外部资源(如图片)。

问题在于:

http://localhost:8081/logos/doodles/2018/**

真的应该出去:

http://localhost:8081/proxgoo/logos/doodles/2018/**

我在想,如果我可以将 Referer 标题http://localhost:8081/proxgoo/的所有内容重定向到代理路由,那么这就是我需要的所有内容:

所以,实际的问题。我认为以下配置会使用请求标头 Referer = http://localhost:8081/proxgoo/重定向所有内容,但它不会提取它。我做过傻事吗?

spring:
  cloud:
    gateway:
      routes:
      - id: redirect_on_referer
        predicates:
        - Header=Referer,http://localhost:8081/proxgoo/
        filters:
        - RedirectTo=302, http://localhost:8081/proxgoo/

1 个答案:

答案 0 :(得分:0)

routes下,您应该可以到达那里:

- id: redirect_on_referer
  uri: http://localhost:8081
  predicates:
    - Header=Referer, http://localhost:8081/proxgoo/
  filters:
    - RewritePath=/(?<segment>.*), /proxgoo/$\{segment}