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

默认情况下,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);

}

}

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

以上是 禁用Tomcat中的所有默认HTTP错误响应内容 的全部内容, 来源链接: utcz.com/qa/400378.html

回到顶部