我正在使用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但它没有用。
答案 0 :(得分:0)
这是Tomcat生成的错误页面。您可以禁用它,只发送状态代码而不是错误页面。为此,您需要将以下属性设置为true
ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR
每当响应状态为
4xx
或5xx
时,就可以在容器特定的响应实施中选择sendError
或setStatus
。例如。在servlet容器上,Jersey可以调用HttpServletResponse.setStatus(...)
或HttpServletResponse.sendError(...)
。调用
sendError(...)
方法通常会重置实体,响应标头并为指定的状态代码提供错误页面(例如,servleterror-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