Перенаправление с @ExceptionHandler не работает - PullRequest
0 голосов
/ 29 января 2019

У меня есть обработчик исключений, подобный этому:

@ControllerAdvice
public classMyExceptionHandler extends ResponseEntityExceptionHandler {
    @ExceptionHandler(MyRuntimeException.class)
    public String handleMyRuntimeException(MyRuntimeExceptionexception ex){
        LOGGER.info(ex.getMessage());
        return "redirect:/www.google.com";
    }
}

Я выполняю http-запрос, я вижу, что контроллер обрабатывает мой запрос, затем MyRuntimeException выдает и вызывает метод handleMyRuntimeException.но в почтальоне я вижу, что сервер возвращает 401 статус http, и я не вижу www.google.com в заголовках ответов.

Что я не прав?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

В моем случае все работает нормально, пожалуйста, проверьте:

@ControllerAdvice
public class ErrorHandler {

    @ExceptionHandler(CustomRuntimeException.class)
    @ResponseStatus(value=HttpStatus.OK)
    public ModelAndView handleCustomRuntimeException(HttpServletRequest request, HttpServletResponse response, Exception ex) {
        ModelAndView mav = new ModelAndView("error");
        mav.addObject("error", "500");
        return mav;
        //return new ModelAndView("redirect:https://www.google.com");
    }
}
0 голосов
/ 29 января 2019

Во-первых, почтальон по умолчанию будет автоматически следовать перенаправлению.В Почтальоне вы получите ответ, который уже перенаправлен на /www.google.com.Перейдите к настройке, чтобы отключить это:

enter image description here

Второй, redirect:/www.google.com отличается от redirect://www.google.com.Предполагая, что ваш сервер 127.0.0.1:8080:

  • redirect:/www.google.com -> перенаправить на http://127.0.0.1:8080/www.google.com
  • redirect://www.google.com -> перенаправить на http://www.google.com

Таким образом, вы фактически перенаправляете обратно на свой сервер, и полученная вами ошибка 401, вероятно, связана с контролем доступа вашего сервера.

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