solovladys
@solovladys
Люблю программировать

Почему @RequestHeader не получает добавленный хедер в фильтре?

Почему я не получаю значение в параметре метода @RequestHeader ("Custom-Header"), хотя получаю его в @RequestHeader Map<String, String> headers?

Изначально запрос поступает на сервер без "Custom-Header" я добавляю его в своем фильтре. После этого запрос попадает в метод, но почему-то spring не инжектит заголовок в параметр @RequestHeader("Custom-Header")

method:
@PostMapping("/support")
    public SupportView sendEmailToSupport(/*@Validated MessageView supportView,*/
            @RequestHeader Map<String, String> headers, //здесь присутствует "Custom-Header"
            @RequestHeader(value = CUSTOM_HEADER, required = false) String customHeader) { //но сюда не инжектит
        SupportView supportView = helpDeskService.sendEmailToSupport(null, customHeader);
        return supportView;
    }

filter:
public class HeaderChangerFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    MutableHttpServletRequestWrapper request = new MutableHttpServletRequestWrapper((HttpServletRequest) servletRequest);

    String oldHeaderValue = request.getHeader(OLD_HEADER);
    String newHeaderValue = request.getHeader(CUSTOM_HEADER);

    if (oldHeaderValue != null && newHeaderValue == null) {
        request.putHeader(CUSTOM_HEADER, RequestHeaderUtils.getOldHeaderValue(request));
    }

    filterChain.doFilter(request, servletResponse); //в реквесте есть "Custom-Header" 
}}
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы