当前位置: 首页 > 面试题库 >

禁用Tomcat中的所有默认HTTP错误响应内容

许俊风
2023-03-14
问题内容

默认情况下,Tomcat的发送一些HTML内容返回给客户端,如果它通过遇到类似的HTTP 404。我知道,web.xml一个<error-page>
可以配置自定义此内容。

但是,我只希望Tomcat 不发送任何 响应内容(当然,我仍然希望状态码)。有什么方法可以轻松配置它吗?

我试图避免A)从我的Servlet在响应流上显式发送空内容,以及B)在我的中为一堆HTTP错误状态配置自定义错误页面web.xml

在某些背景下,我正在开发HTTP API并控制自己的响应内容。因此,例如对于HTTP 500,我在响应中填充了一些XML内容,其中包含错误信息。对于HTTP
404之类的情况,HTTP响应状态对于客户端来说足够了,并且tomcat正在发送的内容是不必要的。如果有其他方法,我愿意听。

编辑:
经过不断调查,我仍然找不到解决方案的方法。如果有人可以明确地说这是不可能的,或者提供了一个资源证明它行不通,那么我将接受它作为答案并尝试解决它。


问题答案:

如果您不想tomcat显示错误页面,则不要使用sendError(…)。而是使用setStatus(…)。

例如,如果您想给出405响应,那么您可以

response.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED);      
response.getWriter().println("The method " + request.getMethod() + 
   " is not supported by this service.");

还请记住不要从servlet抛出任何异常。而是捕获Exception,然后再次设置自己的statusCode。

protected void service(HttpServletRequest request,
      HttpServletResponse response) throws IOException {
  try {

    // servlet code here, e.g. super.service(request, response);

  } catch (Exception e) {
    // log the error with a timestamp, show the timestamp to the user
    long now = System.currentTimeMillis();
    log("Exception " + now, e);
    response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    response.getWriter().println("Guru meditation: " + now);
  }
}

当然,如果您不想要任何内容​​,则只需不向写者写任何东西,只需设置状态即可。



 类似资料:
  • 我使用Spring MVC3.2@RequestMapping和@ResponseBody作为REST服务。一个示例endpoint如下所示:

  • 当通过URL调用我的Web应用程序中不存在的项目时,Spring会使用JSON响应,其中包含(时间、状态、错误、消息、路径)等数据。所以,我需要更改这个JSON的结构,特别是我需要删除路径。我该怎么做?我应该在我的项目中在哪里实现异常的自定义?向大家问好! json响应修改

  • 我们正在用Spring Boot开发一个REST服务,并陷入了困境,想知道是否每个错误响应都应该具有相同的JSON结构? 对于错误情况,我们的服务使用简单的JSON格式进行响应。例如,如果参数格式错误,我们将以HTTP状态和JSON响应: 是我们的自定义代码id。人们可能会争论这种设计是否好,但它很简单,服务消费者可以轻松处理。 现在,Spring Boot会自动创建一些错误响应。例如,对于一个和

  • 我正在使用Tomcat 6(但同样适用于Tomcat 7)。假设我的 包含以下定义: 假设我现在从其他servlet/JSP返回HTTP 401: 如何访问中的HTTP响应文本("这是一条消息")?Tomcat这样做的方式,当它显示这样的错误页面时 是通过使用 Valve ()。我也需要编写吗? 编辑:下面接受的答案正是我一直在寻找的,这个问题的假设重复没有提到相同的解决方案。

  • 我已经尝试禁用Spring boot W/C抛出的默认错误处理 {“时间戳”:1575346220347,“状态”:500,“错误”:“内部服务器错误”,“异常”:“org.springframework.web.client.httpclienterroreXception”,“消息”:“401未经授权”,“路径”:“/auth/login”} 和 但是我得到的是一堆HTML格式的响应,而不是应

  • 问题内容: 我有一个使用AngularJS和服务器端后端构建的应用程序,该后端以JSON形式传递所有请求。每个请求都包装在一个JSON容器中,该容器包含一个数据变量,该变量包含特定于该请求的数据。其他数据用于保持应用程序内的状态和控制,检查错误和成功消息以及检查会话标志。所有其他变量都随EVERY请求一起提供,并且在数据变量之前先进行检查。 现在,我有一种方法可以先检查JSON响应的内容,然后再检

  • 问题内容: 当前,来自spring boot的错误响应包含如下标准内容: 我正在寻找一种方法来消除响应中的“ exception”属性。有没有办法做到这一点? 问题答案: 如有关错误处理的文档中所述,您可以提供自己的bean,该bean实施以控制内容。 一个简单的方法就是继承。例如:

  • 需要捕获python中HTTP错误的响应主体。当前正在使用python请求模块的raise_for_status()。此方法仅返回状态代码和说明。需要一种方法来捕获响应主体以获取详细的错误日志。 如果在某些不同的模块中存在类似的必需特性,请建议python请求模块的替代方案。如果没有,请建议可以对现有代码进行哪些更改以捕获所述响应主体。 当前实现仅包含以下内容: