自定义错误页面404

时间:2016-01-20 06:58:37

标签: apache tomcat http-status-code-404 jersey-2.0

我正在使用tomcat运行rest api服务器。 我正打电话:

本地主机:8080 / scriptalert%28XSS%29%2Fscript /用户

我收到了这个回复:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /�script�alert(�XSS�)�/script�/users was not found on this server.</p>
</body></html>

我想自定义此消息,即网址不在消息中。 我不确定是谁产生了响应,是apache吗? tomcat的?球衣?

我已经尝试将错误映射添加到web.xml但它没有用。

2 个答案:

答案 0 :(得分:0)

这是Tomcat生成的错误页面。您可以禁用它,只发送状态代码而不是错误页面。为此,您需要将以下属性设置为true

  

ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR

     

每当响应状态为4xx5xx时,就可以在容器特定的响应实施中选择sendErrorsetStatus。例如。在servlet容器上,Jersey可以调用HttpServletResponse.setStatus(...)HttpServletResponse.sendError(...)

     

调用sendError(...)方法通常会重置实体,响应标头并为指定的状态代码提供错误页面(例如,servlet error-page配置)。但是,如果要进行后处理响应(例如,通过servlet过滤器),唯一的方法是在容器响应对象上调用setStatus(...)

     

如果属性值为true,则使用方法Response.setStatus(...)而不是默认Response.sendError(...)

     

属性值的类型为boolean。默认值为false

您只需调用ResourceConfig即可在property(key, value)子类构造函数中设置它。或者,如果您使用的是web.xml,只需将其设置为init-param即可。在web.xml中,您将需要使用String版本

  

jersey.config.server.response.setStatusOverSendError

答案 1 :(得分:0)

错误是在apache级别上,而不是在tomcat级别上,因为我认为。 为了覆盖apache错误: How to Override Apache error pages