禁用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