Пересылка DispatcherServlet с использованием фильтра после миграции Spring Boot 2 - PullRequest
0 голосов
/ 17 сентября 2018

Я недавно обновил свое приложение с Spring Boot 1.5.14 до Spring Boot 2. У меня возникла проблема при пересылке запроса после перехвата его с помощью пользовательского фильтра.

CustomFilter.java

@Override
protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) throws ServletException, IOException {
    HeaderMapRequestWrapper requestWrapper = new HeaderMapRequestWrapper(req);
    requestWrapper.addHeader(SecurityConstants.X_ADAP_HEADER,"true");
    requestWrapper.getRequestDispatcher(RestApi.NEW_LOGIN_TOKEN).forward(requestWrapper, res);
}

После пересылки обновленного запроса я получаю следующую ошибку:

2018-09-17 17:40:34.448  WARN 28704 --- [-nio-443-exec-5] o.s.web.servlet.PageNotFound             : Request method 'POST' not supported
2018-09-17 17:40:34.449  WARN 28704 --- [-nio-443-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved exception caused by Handler execution: org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported

Я ничего не изменил в отношении этой части кода во время миграции, однако это работало нормально при использовании Spring Boot 1.5.14.

После дальнейшей отладки я увидел, что дальше по трассировке стека я достиг метода checkRequest(HttpServletRequest request) в классе WebContentGenerator.

WebContentGenerator.java

protected final void checkRequest(HttpServletRequest request) throws ServletException {
    // Check whether we should support the request method.
    String method = request.getMethod();
    if (this.supportedMethods != null && !this.supportedMethods.contains(method)) {
        throw new HttpRequestMethodNotSupportedException(method, this.supportedMethods);
    }

    // Check whether a session is required.
    if (this.requireSession && request.getSession(false) == null) {
        throw new HttpSessionRequiredException("Pre-existing session required but none found");
    }
}

В этом методе supportedMethods равен {GET, HEAD}, и поэтому я получаю эту ошибку.

При проверке моего проекта Spring Boot 1.5.14 после пересылки запроса я даже не достигаю класса WebContentGenerator, поэтому я думаю, что это как-то связано с обновленными классами во время миграции Spring 2. Что изменилось в Spring Boot 2, что заставило меня получить эту ошибку и как я могу обойти это?

Спасибо и ценим помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...