Как перенаправить страницу ошибки, когда URL содержит специальный символ? - PullRequest
0 голосов
/ 19 декабря 2018

У меня вопрос по настройке 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

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете попробовать эту программу.

Я думаю, вы можете настроить свой фильтр в 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----");
    }
}

Мой английский плохой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...