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