Внешние перенаправления в логике исключений не работают на Tomcat 8.5.39

#spring #tomcat

#spring #tomcat

Вопрос:

Я настраиваю логику обработки исключений для составного проекта с общей страницей ошибок (которая размещена в другой части проекта). Когда я попытался перенаправить на внешний URL-адрес при исключении, tomcat 8.5.39 вместо этого показывает ошибку по умолчанию. Забавно, что это, похоже, отлично работает в tomcat 8.5.38

Я перепробовал много разных методов обработки исключений, но все они, похоже, не работают для внешних перенаправлений.

Итак, в настоящее время у меня есть что-то подобное в моем web.xml файл:

 ...
    <error-page>
        <error-code>404</error-code>
        <location>/error/error404</location>
    </error-page>
...
  

и для моего контроллера Spring,

 @Controller
@RequestMapping(value = "/error")
public class ErrorHandler{
...
    @GetMapping(value = "error404")
    public String error404(){
        return "redirect:http://{myproject}/{404errorPage}";
    }
...
}
  

Я ожидаю, что этот код перенаправит пользователя на http://{myproject}/ {404errorPage} при возникновении ошибки 404, которая отлично работает в tomcat 8.5.38. Но в 8.5.39, похоже, они изменили логику обработки ошибок, и на ней будет отображаться страница ошибок по умолчанию (страница браузера по умолчанию 404).

Любой ввод или идея были бы чрезвычайно полезны.

Комментарии:

1. Я еще немного покопался и обнаружил, что заголовок сообщения показывает 404 для 8.5.39 и 302 для 8.5.38, чего я и хочу. Все остальное (включая местоположение перенаправления) выглядит нормально.

Ответ №1:

Это известная регрессия в 8.5.39, которая исправлена в только что выпущенном 8.5.40.

Комментарии:

1. Вау, большое спасибо за исправление 🙂 я продолжу и обновлюсь до 8.5.40