Просто используя 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/