¿Es posible desactivar jsessionid en la url en tomcat? el jsessionid parece no ser demasiado amigable para los motores de búsqueda.¿Es posible deshabilitar jsessionid en el servlet de tomcat?
Respuesta
Puede desactivar solo los motores de búsqueda que utilizan este filtro, pero aconsejaría utilizándolo para todas las respuestas ya que es peor que solo el motor de búsqueda antipático. Expone el ID de sesión que se puede usar para ciertos exploits de seguridad (more info).
Tomcat 6 (pre 6.0.30)
Usted puede utilizar el tuckey rewrite filter.
Example config para el filtro de 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 y en adelante)
Puede utilizar disableURLRewriting en la configuración de contexto para desactivar este comportamiento.
Tomcat Tomcat 7 y 8
De Tomcat 7 onwards puede agregar lo siguiente en la configuración de sesión.
<session-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
Utilice un Filter
en todas las direcciones URL que envuelve el response
en un HttpServletResponseWrapper
que simplemente devuelve la URL sin cambios desde encodeRedirectUrl
, encodeRedirectURL
, y encodeUrl
encodeURL
.
El código de ejemplo está disponible aquí: http://randomcoder.com/articles/jsessionid-considered-harmful El servidor puede estar inactivo; Tuve que sacarlo de la memoria caché de Google. –
Me gustó este enfoque. – vsingh
Presupuesto de la respuesta de la piscina:
Usted puede utilizar el filtro de Tuckey reescritura.
Puede desactivar por sólo buscar motores que utilizan este filtro, pero me consejo de usarlo para todas las respuestas como Es peor que un simple motor de búsqueda antipáticos. 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 la jsessionid ya no esté visible. (tomado de su otra publicación: Can I turn off the HttpSession in web.xml?)
PS. No tengo suficiente reputación para comentar, de lo contrario, habría agregado esto a su publicación anterior como un comentario.
También si tiene Apache delante de 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, Marcos
De manera predeterminada, las cookies están habilitadas en el servidor Tomcat (se puede establecer de forma explícita mediante el uso de las 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, jsessionID's 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 reglas de reescritura 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
Tenga en cuenta que el navegador web aún necesita tener habilitadas las cookies. – BalusC
Es posible hacer esto en Tomcat 6.0 con: disableURLRewriting
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
p.
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="PATH_TO_WEBAPP" path="/CONTEXT" disableURLRewriting="true">
</Context>
Dentro Tomcat 7.0, esto se controla con la siguiente dentro de una aplicación: ServletContext.setSessionTrackingModes()
Tomcat 7.0 sigue el Servlet 3.0 especificaciones.
<session-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
Tomcat Tomcat 7 y 8 de soporte de la configuración anterior en su web.xml web-app, que desactiva las sesiones basadas en URL.
No olvides usar web-app_3.0 xsd:
En Tomcat 6.0 puede usar disableURLRewriting = "true" en context.xml desde su ruta/config de su instalación de tomcat.
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
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 salida de Tomcat es el motor de búsqueda ...
Disfruta
- 1. Deshabilitar jsessionid a través del encabezado http (cookie) en Tomcat 7
- 2. Cookie JSESSIONID con fecha de caducidad en Tomcat
- 3. ¿Es jSessionId realmente único?
- 4. Cómo ejecutar servlet en el servidor tomcat
- 5. JSF en Tomcat: ¿por qué es posible?
- 6. servlet de inicio automático tomcat
- 7. Bucle sin fin en un servlet - ¿es posible la recuperación?
- 8. Servlet 3 tarea asíncrona en Tomcat 7
- 9. ¿Detecta la desconexión del cliente en el servlet de tomcat?
- 10. Tomcat 6 con servlet 3 especificación
- 11. jsessionid de URL
- 12. ¿Es posible deshabilitar stderr en C++?
- 13. Servlet Asignaciones con variables (Tomcat 7.0)
- 14. Tomcat 7 - La cookie JSESSIONID no es accesible desde el código JavaScript
- 15. Tomcat Java Servlet - Clase Initialize en la Aplicación de inicio
- 16. ¿Cómo configurar el servlet raíz en Tomcat 6?
- 17. ¿Es posible deshabilitar el desplazamiento en una lista Vista?
- 18. ¿Servlet es el singleton?
- 19. cómo deshabilitar el almacenamiento en memoria caché de tomcat?
- 20. Deshabilitar el procesamiento de anotaciones, pero habilitar la función de fragmentos web en servlet api 3.0 (Tomcat7)
- 21. Chrome y JSESSIONID
- 22. Asignación de URL en Tomcat al servlet FrontController
- 23. ¿Cómo obtengo el objeto org.apache.catalina.connector.Request en Tomcat?
- 24. Tomcat: cómo acceder al administrador (sesión) desde el servlet
- 25. En Tomcat java.lang.NoClassDefFoundError al acceder a un servlet?
- 26. servlet como welcome-file-list en Tomcat 7
- 27. Subproceso de fondo para una aplicación de servlet de Tomcat
- 28. ¿es posible llamar al servlet java desde ring/compojure?
- 29. ¿Es posible usar un JSP como plantilla para un servlet?
- 30. ¿En qué condiciones se crea un JSESSIONID?
Por qué utilizar una re-escritura cuando simplemente no puedes crear una cookie de sesión? –
Consulte la fecha de esta respuesta. Tomcat 7 y la función de modo de seguimiento no estaban disponibles en 2009. Actualizado con información por versión ahora. – Pool
Tomcat 6 admite el atributo 'disableURLRewriting' en el elemento Context que hace esto. Ver http://tomcat.apache.org/tomcat-6.0-doc/config/context.html –