Java IIS重写请求-响应数据
我有一个tomcat托管的spring应用程序。应用程序使用spring异常处理程序捕获和处理异常。例如,当发生这种情况时,我们将请求的响应状态重写为400。下面是我们的处理程序的一个示例Java IIS重写请求-响应数据,java,spring-mvc,tomcat,intellij-idea,Java,Spring Mvc,Tomcat,Intellij Idea,我有一个tomcat托管的spring应用程序。应用程序使用spring异常处理程序捕获和处理异常。例如,当发生这种情况时,我们将请求的响应状态重写为400。下面是我们的处理程序的一个示例 @ExceptionHandler({StepAlreadyInPlanException.class}) @ResponseBody @ResponseStatus(value = HttpStatus.BAD_REQUEST) public ErrorObject stepAlreadyInP
@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状态头返回OK,就像so@ResponseStatus(value=HttpStatus.OK)
一样。我们得到了全部数据
我怀疑tomcat是如何干扰请求并压制我们的响应的。我如何配置tomcat以允许这种类型的数据通过
我最初怀疑这是tomcat重写,但解决问题后,我现在知道是IIS重写了头。我认为您需要配置生产web服务器(
apache server
或IIS
…)而不是tomcat
您的一些Web服务器配置会截获tomcat错误响应,并将其重定向到自己的自定义页面
您所要做的就是覆盖或删除该配置。可能您的应用程序被配置为在出现错误时提供静态页面,这会导致Spring、servlet容器和静态web服务器(如果您有)之间发生冲突 看看这个:
我必须重新配置IIS httperrors配置,并将existingResponse设置为passTour。在IIS中如何执行此操作?