2010-11-17 21 views
13

Estoy utilizando Jetty para implementar un sitio web de producción. Supongamos que mi sitio web es foo.com Cuando señalo mi navegador a un contexto que no existe (digamos foo.com/notavailable), Jetty muestra una página de error con información de todos los contextos que se implementan en ella.Cómo evitar que Jetty muestre información relacionada con el contexto

se ve algo como esto:

Sin contexto en este servidor emparejado o manipulado esta solicitud. contextos conocidos a este servidor son:

quiero prevenir Jetty de la muestra este mensaje, ya que contiene la ruta completa al contexto en el servidor.

¿Hay alguna manera de hacerlo?

Respuesta

7

Esa página es proporcionada por el "DefaultHandler" embarcadero

Para detener esa página de visualización, debe quitar ese manejador de su servidor (que está configurado en su jetty.xml archivo) Realmente no necesita (o desea) el controlador predeterminado en un servidor de producción (con conexión a Internet), por lo que es una buena idea eliminarlo.

Tenga en cuenta que también proporciona la página 404 normal y el favicon.ico, por lo que si confía en esos comportamientos, deberá reemplazarlos.

+0

Es mejor explicar o poner el answe aquí, una vez vínculo no es válido sin pinta en la realización de la respuesta. El enlace actual se ha vuelto inválido. – Sohan

+0

si el enlace está roto – SimplyInk

12

Al configurar Jetty XML, puede establecer showContexts en false en DefaultHandler.

Si está utilizando versiones anteriores de Jetty, reemplace org.eclipse.jetty en mi ejemplo con la antigua estructura de paquetes 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> 

Tal vez también va a querer para evitar la exploración de directorios configurar el DefaultServlet de su 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> 
+0

Gracias, su respuesta fue muy útil ... – Parag

5

versión embarcadero 9.X ha llegado con showContexts propiedad en org.eclipse.jetty. servlet.DefaultServlet class. Por lo tanto, podemos configurar showContexts en flase, si no desea mostrar la lista de contextos.

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

Cuestiones relacionadas