Добавление заголовков в Zuul при перенаправлении - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь использовать Zuul для перенаправления вызовов в нисходящую систему где-то еще. В перенаправлении мне нужно добавить в заголовок необходимые данные для api получения перенаправления для обработки. Кажется, я не могу заставить нижестоящую систему обнаружить эти данные. Прикреплен мой код. Я использую Zuul от Edgware.SR3, Spring Boot 1.5.12

Zuul Filter

@Component
public class RouteFilter extends ZuulFilter{

@Override
public Object run() {
//Testing to add header
    context.getRequest().getParameterMap().put("api", new String[]{"api"});
    context.getResponse().setHeader("api", api);
    context.addZuulResponseHeader("api", "api");
    context.addZuulRequestHeader("api", "api");
    context.setSendZuulResponse(false);
    context.put(FORWARD_TO_KEY, redirect_urls.get(key));
    context.setResponseStatusCode(HttpStatus.SC_TEMPORARY_REDIRECT);
    context.getResponse().sendRedirect(redirect_urls.get(key));
    return null;
}
}

Код перенаправленной услуги

@RequestMapping(value = "/forward")
public ResponseEntity<String> forwardToMe(@RequestHeader(required = true, name = "api")String api){
    return new ResponseEntity<String>("Hi",HttpStatus.OK);
}

Ошибка, полученная почтальоном

{ «отметка времени»: 1524737817729, «статус»: 400, «ошибка»: «Неверный запрос», «исключение»: «org.springframework.web.bind.ServletRequestBindingException», "message": "Отсутствует заголовок запроса" api "для параметра метода типа String", "путь": "/ вперед"}

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Я обновляю свой комментарий здесь на всякий случай, если кто-то все еще сталкивается с этой проблемой. Я недавно нашел эту проблему и решил, добавив следующую конфигурацию в мой application.yml

application.yml ... zuul: sensitive-headers: - Cookie,Set-Cookie ...

Ссылка ниже:
https://cloud.spring.io/spring-cloud-static/Dalston.SR5/multi/multi__router_and_filter_zuul.html

0 голосов
/ 27 апреля 2018

Я полагаю, вы используете Route Filter , возможно, вы можете попробовать Pre Filter .

Добавление пользовательского заголовка может быть сделано примерно так: context.addZuulRequestHeader("Authorization", "Basic " + credentials);.

Для части перенаправления вы можете проверить это thread

...