Как запретить Jetty показывать контекстную информацию - PullRequest
14 голосов
/ 17 ноября 2010

Я использую Jetty для развертывания производственного веб-сайта.Давайте предположим, что мой веб-сайт - foo.com. Когда я указываю своему браузеру на контекст, который не существует (скажем, foo.com/notavailable), Jetty показывает страницу с ошибкой со сведениями обо всех контекстах, которые развернуты на нем.

Это выглядит примерно так:

Нет контекста на этом сервере, который соответствует или обработал этот запрос.Для этого сервера известны следующие контексты:

  • / test ---> org.mortbay.jetty.webapp.WebAppContext@6910fe28 {/test,/root/webserver/jetty-6.1.4/webapps/test}

Я хочу запретить Jetty показ этого сообщения, поскольку оно содержит полный путь к контексту на сервере.

Есть ли способ сделать это?

Ответы [ 3 ]

12 голосов
/ 08 мая 2012

При настройке Jetty XML вы можете установить showContexts в false на DefaultHandler.

Если вы используете более старые версии Jetty, замените org.eclipse.jetty в моем примере старой структурой пакета org.mortbay.jetty.

  <Configure id="Server" class="org.eclipse.jetty.server.Server">

  <!-- =========================================================== -->
  <!-- Set handler Collection Structure -->
  <!-- =========================================================== -->
  <Set name="handler">
    <!-- the collection of handlers that will handle the request -->
    <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
      <Set name="handlers">
        <Array type="org.eclipse.jetty.server.Handler">
          <!-- primarily handles the request and maps the request to a ContextHandler -->
          <Item>
            <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
          </Item>

          <!-- The default handler ... handles the request if not yet handled -->
          <Item>
            <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
          </Item>

          <!-- The handler for your request logs -->
          <Item>
            <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/>
          </Item>
        </Array>
      </Set>
    </New>
  </Set>

  <!-- ===================== -->
  <!-- DefaultHandler config -->
  <!-- ===================== -->

  <Ref id="DefaultHandler">
    <Set name="showContexts">false</Set>
  </Ref>

</Configure>

Возможно, вы также захотите запретить просмотр каталогов, настраивая DefaultServlet вашего web.xml,

  <servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.eclipse.jetty.servlet.DefaultServlet</servlet-class>
    <init-param>
      <param-name>dirAllowed</param-name>
      <param-value>false</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
8 голосов
/ 21 января 2011

Эта страница предоставляется Jetty "DefaultHandler"

Чтобы остановить отображение этой страницы, вы должны удалить этот обработчик с вашего сервера (он настроен в вашем файле jetty.xml.) На самом деле вам не нужен (или не нужен) обработчик по умолчанию на производственном сервере (с выходом в Интернет), поэтому рекомендуется удалить его.

Обратите внимание, что онтакже содержит обычную страницу 404 и favicon.ico, поэтому, если вы полагаетесь на такое поведение, вам нужно будет заменить его.

5 голосов
/ 17 сентября 2014

Версия Jetty 9.X содержит свойство showContexts в классе org.eclipse.jetty.servlet.DefaultServlet.Следовательно, мы можем установить showContexts в flase, если вы не хотите показывать список контекстов.

<Item>
 <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler">
     <Set name="showContexts">false</Set>
 </New>
</Item>
...