unloaddelay reloadable crosscontext context configurar antiresourcelocking java tomcat servlets jsessionid

java - reloadable - ¿Es posible deshabilitar jsessionid en el servlet de tomcat?



tomcat web xml context (8)

Además, si tiene Apache frente a Tomcat, puede quitar la jsession con un filtro mod_rewrite.

Agregue lo siguiente a su configuración de Apache.

#Fix up tomcat jsession appending rule issue RewriteRule ^/(.*);jsessionid=(.*) /$1 [R=301,L]

Esto hará una redirección 301 a una página sin la jsessionid. Obviamente, esto deshabilitará por completo url jsessionid, pero esto es lo que necesitaba.

Saludos, Mark

¿Es posible desactivar jsessionid en la url en tomcat? el jsessionid parece no ser demasiado amigable para los motores de búsqueda.


Cita de la respuesta de Pool:

Puede usar el filtro de reescritura de Tuckey.

Puede desactivar solo los motores de búsqueda que usan este filtro, pero le aconsejo que lo use para todas las respuestas, ya que es peor que solo el motor de búsqueda hostil. Expone el ID de sesión que se puede usar para ciertos exploits de seguridad (más información).

Vale la pena mencionar que esto aún permitirá el manejo de sesión basado en cookies aunque el jsessionid ya no esté visible. (tomado de su otra publicación: ¿Puedo desactivar HttpSession en web.xml? )

PD. No tengo suficiente reputación para comentar, de lo contrario, habría agregado esto a su publicación anterior como un comentario.


De forma predeterminada, las cookies están habilitadas en el servidor Tomcat (puede establecerlo explícitamente usando cookies = true en el elemento de server.xml). Habilitar cookies significa que jsessionID no se agregará a las URL, ya que la sesión se administrará mediante cookies. Sin embargo, incluso después de habilitar las cookies, las jsessionID se anexan a la URL para la primera solicitud, ya que el servidor web no sabe en ese momento si las cookies se han habilitado. Para eliminar tales jsessionIDs, puede usar las reglas de reescritura de tuckey:

Puede encontrar más información sobre esto en http://javatechworld.blogspot.com/2011/01/how-to-remove-jsessionid-from-url-java.html

<outbound-rule encodefirst="true"> <note>Remove jsessionid from embedded urls - for urls WITH query parameters</note> <from>^/(.*);jsessionid=.*[?](.*)$</from> <to encode="false">/$1?$2</to> </outbound-rule> <outbound-rule encodefirst="true"> <note>Remove jsessionid from embedded urls - for urls WITHOUT query parameters</note> <from>^/(.*);jsessionid=.*[^?]$</from> <to encode="false">/$1</to> </outbound-rule>

Puede encontrar más información sobre esto en http://javatechworld.blogspot.com/2011/01/how-to-remove-jsessionid-from-url-java.html


En Tomcat 6.0 puede usar disableURLRewriting = "true" en context.xml desde su ruta / config de su instalación de tomcat.

disableURLRewriting

archivo context.xml

<?xml version=''1.0'' encoding=''utf-8''?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <!-- The contents of this file will be loaded for each web application --> <Context disableURLRewriting="true"> <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- Uncomment this to enable Comet connection tacking (provides events on session expiration as well as webapp lifecycle) --> <!-- <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> --> </Context>

...

Ahora la salida de tomcat es amigable para los motores de búsqueda ...

Disfrutar


Es posible hacer esto en Tomcat 6.0 con: disableURLRewriting

disableURLRewriting

p.ej

<?xml version=''1.0'' encoding=''utf-8''?> <Context docBase="PATH_TO_WEBAPP" path="/CONTEXT" disableURLRewriting="true"> </Context>

Dentro de Tomcat 7.0, esto se controla con lo siguiente dentro de una aplicación: ServletContext.setSessionTrackingModes ()

Tomcat 7.0 sigue las especificaciones de Servlet 3.0.


Puede desactivar solo los motores de búsqueda que usan este filtro, pero le aconsejo que lo use para todas las respuestas, ya que es peor que solo el motor de búsqueda hostil. Expone el ID de sesión que se puede usar para ciertos exploits de seguridad ( más información ).

Tomcat 6 (pre 6.0.30)

Puede usar el filtro de reescritura de Tuckey .

Ejemplo de configuración para el filtro Tuckey:

<outbound-rule encodefirst="true"> <name>Strip URL Session ID''s</name> <from>^(.*?)(?:/;jsessionid=[^/?#]*)?(/?[^#]*)?(#.*)?$</from> <to>$1$2$3</to> </outbound-rule>

Tomcat 6 (6.0.30 en adelante)

Puede usar disableURLRewriting en la configuración de contexto para deshabilitar este comportamiento.

Tomcat 7 y Tomcat 8

Desde Tomcat 7 en adelante , puede agregar lo siguiente en la configuración de la sesión.

<session-config> <tracking-mode>COOKIE</tracking-mode> </session-config>


Utilice un Filter en todas las URL que HttpServletResponseWrapper la response en un HttpServletResponseWrapper que simplemente devuelve la URL sin cambios desde encodeRedirectUrl , encodeRedirectURL , encodeUrl y encodeURL .


<session-config> <tracking-mode>COOKIE</tracking-mode> </session-config>

Tomcat 7 y Tomcat 8 admiten la configuración anterior en su web-app web.xml, que deshabilita las sesiones basadas en URL.