#vert.x #vertx-httpclient
#vert.x #vertx-httpclient
Вопрос:
Я новичок в Vertx, я пишу прокси-сервер, который будет принимать запрос, обновлять заголовок и отправлять на другой сервер. При получении ответа отправьте полный ответ в том виде, в каком он есть, клиенту.
В vertx, есть ли способ, которым я могу это сделать, или мне нужно реализовать обработчик для каждого метода http и типа контента, чтобы создать новый запрос и отправить с использованием нового клиента?
Ответ №1:
Если вы используете vertx-web
версию 3.x и ниже, то вы можете сделать:
void redirect( RoutingContext rc, String url ) {
if( !rc.response().ended() )
rc.response().setStatusCode( 303 ).putHeader( 'Location', url ).end()
}
Комментарии:
1. в vert.x 4 есть аналогичный метод
RoutingContext
, поэтому вы можете просто сделать:ctx.redirect(destination)
2. @injecteer Я пробовал,
rc.response().setStatusCode( 303 ).putHeader( 'Location', url ).end()
я пробовал с кодом состояния 307, 308 также, поскольку http-метод post. Я также устанавливаю токен jwt в заголовке.putHeader( "Authorization","Bearer " token)
. Но на целевом сервере (не vertx) он выдает 401 с сообщением «Значение заголовка аутентификации недопустимо». Как установить правильный заголовок с помощью токена jwt?3. вы можете добавить свой токен в качестве параметра GET:
putHeader( 'Location', url '/' token )
4. Я не думаю, что клиент может делегировать заголовки другому серверу, только URL, поэтому вы можете использовать стандартную функцию перенаправления или повторно отправить запрос от клиента с помощью ajax или аналогично
5. Спасибо, поскольку я использую vertx 3.9, я использовал предложенное решение, и перенаправление работает.