Spring中有一个异常处理程序。这个异常处理程序的目标是向响应中添加一些附加的头。
如果我使用response.setStatus将状态设置为404,则头似乎会被覆盖,而且我看不到客户端的"something_random“标头。如果我省略了setStatus(404),那么它可以正常工作,但是客户端会得到带有标头的200。是否有方法确保404响应设置了自定义标头?
春季版本: 4.3.25
我试过的是:
@ExceptionHandler(CustomNotFoundException.class)
public void handleFailure(Exception ex, HttpServletResponse response) {
response.setHeader("something_random", "bob");
reseponse.setStatus(404);
}
也尝试过(不确定是否不同):
@ExceptionHandler(CustomNotFoundException.class)
public ResponseEntity<Object> handleFailure(Exception ex, HttpServletResponse response) {
// Initialize 'headers'
return new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}
发布于 2021-01-28 17:03:57
我在SpringBoot2.4.2(SpringFramework5.3.3)中尝试了以下方法,并且响应中存在custom
头:
@ExceptionHandler(InvalidResponseException.class)
public ResponseEntity<String> handleOpenApiResponseValidationExceptions(InvalidResponseException ex, HttpServletResponse response) {
return ResponseEntity.status(INTERNAL_SERVER_ERROR)
.header("custom", "value")
.body(ex.getMessage());
}
发布于 2021-01-28 17:19:35
我知道这是个老生常谈的问题,但有一种方法可以适应这个问题。
@EnableWebMvc
@Configuration
public class ExceptionHandlingConfig {
@Autowired
private DispatcherServlet dispatcherServlet;
@PostConstruct
private void configureDispatcherServlet() {
dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
}
}
https://stackoverflow.com/questions/61669059
复制相似问题