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/

person Vince    schedule 30.04.2018    source источник


Ответы (1)


Это под routes должно привести вас туда:

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