首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ExceptionHandler中清除弹簧头

在ExceptionHandler中清除弹簧头
EN

Stack Overflow用户
提问于 2020-05-07 22:46:34
回答 2查看 476关注 0票数 1

Spring中有一个异常处理程序。这个异常处理程序的目标是向响应中添加一些附加的头。

如果我使用response.setStatus将状态设置为404,则头似乎会被覆盖,而且我看不到客户端的"something_random“标头。如果我省略了setStatus(404),那么它可以正常工作,但是客户端会得到带有标头的200。是否有方法确保404响应设置了自定义标头?

春季版本: 4.3.25

我试过的是:

代码语言:javascript
运行
复制
@ExceptionHandler(CustomNotFoundException.class)
public void handleFailure(Exception ex, HttpServletResponse response) {
  response.setHeader("something_random", "bob");
  reseponse.setStatus(404);
}

也尝试过(不确定是否不同):

代码语言:javascript
运行
复制
@ExceptionHandler(CustomNotFoundException.class)
public ResponseEntity<Object> handleFailure(Exception ex, HttpServletResponse response) {
  // Initialize 'headers'
  return new ResponseEntity<>(headers, HttpStatus.NOT_FOUND);
}
EN

回答 2

Stack Overflow用户

发布于 2021-01-28 17:03:57

我在SpringBoot2.4.2(SpringFramework5.3.3)中尝试了以下方法,并且响应中存在custom头:

代码语言:javascript
运行
复制
@ExceptionHandler(InvalidResponseException.class)
public ResponseEntity<String> handleOpenApiResponseValidationExceptions(InvalidResponseException ex, HttpServletResponse response) {
    return ResponseEntity.status(INTERNAL_SERVER_ERROR)
            .header("custom", "value")
            .body(ex.getMessage());
}
票数 0
EN

Stack Overflow用户

发布于 2021-01-28 17:19:35

我知道这是个老生常谈的问题,但有一种方法可以适应这个问题。

代码语言:javascript
运行
复制
@EnableWebMvc
@Configuration
public class ExceptionHandlingConfig {

@Autowired
private DispatcherServlet dispatcherServlet;

@PostConstruct
private void configureDispatcherServlet() {
    dispatcherServlet.setThrowExceptionIfNoHandlerFound(true);
 }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61669059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档