Я создаю прокси-микро-сервис с SpringBoot, Jetty и kotlin.
Цель этого микро-сервиса - перенаправлять запросы, сделанные моим клиентским приложением, на внешние сервисы (избегая CORS)и отправьте ответ после проверки некоторой пользовательской аутентификации.Запрос, который я получу, будет содержать URL-адрес цели в заголовках (то есть: Target-Url: http://domain.api/getmodel
).
На основе этого ответа я создал класс, который расширяет AsyncProxyServlet
и переписал метод sendProxyRequest
:
class ProxyServlet : AsyncProxyServlet() {
private companion object {
const val TARGET_URL = "Target-Url"
}
override fun sendProxyRequest(clientRequest: HttpServletRequest, proxyResponse: HttpServletResponse, proxyRequest: Request) {
// authentication logic
val targetUrl = clientRequest.getHeader(TARGET_URL)
if (authSuccess) {
super.sendProxyRequest(clientRequest, proxyResponse, proxyRequest)
} else {
proxyResponse.status = HttpStatus.UNAUTHORIZED.value()
}
}
}
Когда я запрашиваю свой прокси-сервер, я использую этот метод и успешно аутентифицируюсь, но не понимаю, как использовать targetUrl для перенаправления запроса.
Метод продолжает вызывать себя, так как перенаправляет исходный запрос к себе (запрос от http://myproxy:port/ до http://myproxy:port/).
Очень трудно найти документацию по этой конкретной реализации пристани,StackOverflow - мое последнее средство!