我在设置tomcat时有疑问。
我想在发生错误时显示常见错误页面。 这是我的客户安全需求。
但是,如果我访问www.mydomain.com/..%5c,我的常见错误页面将无法正常工作。
它们显示“ HTTP ERROR 400 message”。 我想重定向我的常见错误页面。
这是我的web.xml配置。
<error-page>
<error-code>400</error-code>
<location>/error.html</location>
</error-page>
<error-page>
<error-code>401</error-code>
<location>/error.html</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/error.html</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error.html</location>
</error-page>
<error-page>
<error-code>405</error-code>
<location>/error.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error.html</location>
</error-page>
然后我添加了CATALINA_OPTS。 -Dorg.apache.catalina.connector.CoyoteAdapter.ALLOW_BACKSLASH = true -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true
此选项可在www.mydomain.com/%5c中使用 但无法正常使用www.mydomain.com /..% 5c
访问www.mydomain.com/..%5c时如何重定向常见错误页面
答案 0 :(得分:0)
您可以尝试该程序。
我认为您可以在web.xml中配置过滤器。在过滤器中,您可以实现逻辑来处理请求编码和特殊字符,然后重定向到错误页面。
配置
<filter>
<filter-name>name</filter-name>
<filter-class>demoClass</filter-class>
</filter>
<filter-mapping>
<filter-name>name</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
要实现的类
public class demoClass implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("----init----");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//TODO code
}
@Override
public void destroy() {
System.out.println("----destory----");
}
}
我的英语不好