java - IIS 重写 BadRequest 响应数据

标签 java spring-mvc tomcat intellij-idea

我有一个 tomcat 管理的 spring 应用程序。该应用程序使用 spring 异常处理程序来捕获和处理异常。发生这种情况时,我们将请求的响应状态重写为 400,例如。这是我们的处理程序的示例。

@ExceptionHandler({StepAlreadyInPlanException.class})
  @ResponseBody
  @ResponseStatus(value = HttpStatus.BAD_REQUEST)
  public ErrorObject stepAlreadyInPlan(Exception ex) {
    log.log(Level.ERROR, new Date().toString(), ex);

    ErrorObject err = new ErrorObject();
    err.setErrorCode(400);
    err.setMessage("STEP_ALREADY_IN_PLAN_EXCEPTION");

    return err;
  }

这在我们使用 intelliJ 运行服务器的开发中非常有效。当我们在 tomcat 的生产设置中尝试相同的代码时,响应被吞没,我们在响应数据中只看到“BadRequest”。

如果我们更改代码,使 HTTP 状态 header 返回 OK,就像这样 @ResponseStatus(value = HttpStatus.OK)。我们得到了完整的数据。

我怀疑 tomcat 是如何干扰请求并使我们的响应静音的。我如何配置 tomcat 让这种类型的数据通过?!

我最初怀疑这是 tomcat 重写,但在解决问题后我现在知道是 IIS 重写了 header 。

最佳答案

我认为您需要配置您的生产 Web 服务器(apache 服务器IIS...)而不是 tomcat。

您的网络服务器的某些配置会拦截 tomcat 错误响应并将其重定向到它自己的自定义页面。

您所要做的就是覆盖该配置或将其删除。

关于java - IIS 重写 BadRequest 响应数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33014927/

相关文章:

java - Spring mvc Controller 将嵌套的 JSON 绑定(bind)到具有一对多关系的 POJO

tomcat - 如何为tomcat管理器默认页面添加登录

java - Tomcat 使用 Spring 时出现 404 错误?

tomcat - 仅在 Tomcat webapp 上为表单登录设置 SSL

java - 将 Arraylist 从 java.utils 转换为 kotlin.collections.arraylist

java - 使新字体可供 JVM 使用

java - 库存管理JAVA(检查项目是否已存在)

java - HttpGet 401 状态代码后跟 200 状态代码

java - Spring单例@Transactional并发访问

spring - 我的 IDEA tomcat 部署中没有包含本地安装的 jar