我有许多通用错误页面,除了我可以控制的页面以外,其他多个应用程序都在使用这些页面。我想配置Spring Boot错误控制器以重定向到这些页面之一。不幸的是,它不起作用。
例如。
@Controller
public class MyCustomErrorController implements ErrorController {
@GetMapping(value = "/error")
public String handleError(HttpServletRequest request) {
Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if (status != null) {
Integer statusCode = Integer.valueOf(status.toString());
if (statusCode == HttpStatus.NOT_FOUND.value()) {
return "redirect:https://www.example.com/error-404";
}
}
return "redirect:https://www.example.com/error-500";
}
@Override
public String getErrorPath() {
return "/error";
}
}
例如,如果我有意输入了错误的URL,则可以看到响应包含带有我期望的404 URL的Location标头,但浏览器实际上并未重定向。有什么想法可以在自定义ErrorController中进行重定向吗?
这可能是因为我正在尝试从本地主机进行测试,而Strict-Transport-Security忽略了响应Location标头值(位于FQDN上)吗?
答案 0 :(得分:0)
如何将HttpServletResponse添加到方法param并将其用于重定向?
HttpServletResponse response;
response.sendRedirect("https://www.example.com/error-404");
引用HERE
答案 1 :(得分:0)
在application.proerties
文件中添加以下属性
server.error.whitelabel.enabled=false
答案 2 :(得分:0)
尝试一下。
@Controller
public class MyCustomErrorController implements ErrorController {
@GetMapping(value = "/error")
public String handleError(HttpServletRequest request) {
Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if (status != null) {
Integer statusCode = Integer.valueOf(status.toString());
if (statusCode == HttpStatus.NOT_FOUND.value()) {
return "redirect:/error-404"; //remove your https://www.example.com
}
}
return "redirect:/error-500";
}
@Override
public String getErrorPath() {
return "/error";
}
}
** 编辑 **
更改网址映射,然后重试:
错误404->错误/ 404
error-500->错误/ 500
@Controller
public class MyCustomErrorController implements ErrorController {
@GetMapping(value = "/error")
public String handleError(HttpServletRequest request) {
Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if (status != null) {
Integer statusCode = Integer.valueOf(status.toString());
if (statusCode == HttpStatus.NOT_FOUND.value()) {
return "redirect:/error/404"; //remove your https://www.example.com
}
}
return "redirect:/error/500";
}
@Override
public String getErrorPath() {
return "/error";
}
}
错误/ 404
@GetMapping("/error/404")
错误/ 500
@GetMapping("/error/500")