簡體   English   中英

從@ExceptionHandler重定向不起作用

[英]Redirect from @ExceptionHandler doesn't work

我有這樣的異常處理程序:

@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。

我怎么了

首先,默認情況下,郵遞員將自動遵循重定向。 您在Postman中得到的是已經重定向到/www.google.com的響應。 轉到設置將其關閉:

在此處輸入圖片說明

其次, redirect:/www.google.comredirect://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錯誤可能是由於服務器的訪問控制所致。

就我而言,它工作正常,請檢查:

@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");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM