servlet cookie http session-state sessiontracking

http - cookie servlet java



Seguimiento de sesiĆ³n HTTP (6)

Específicamente, ¿qué parte de la solicitud y respuesta HTTP se utilizaría para el seguimiento de la sesión?

En la respuesta HTTP, el servidor puede establecer una cookie. Lo hace con el encabezado Set-Cookie. Por ejemplo:

Set-Cookie: session=12345; path=/

Luego, el cliente devuelve el valor de todas las cookies que coinciden con las propiedades establecidas junto con la cookie, que pueden incluir la ruta (como la anterior) y el dominio, y que aún no han caducado.

La cookie se envía de vuelta al servidor como parte de los encabezados HTTP. Por ejemplo:

Cookie: session=12345

Ninguna parte de la información de la propiedad original se envía con la cookie.

Una cookie única permite al servidor asociar una clave única con una instancia de navegador en particular. El servidor puede usar esa clave como un índice en una tabla hash o una tabla de base de datos que contiene información de estado única por usuario.

Dado que HTTP es un protocolo sin estado, cuando un cliente realiza varias solicitudes al servidor, ¿cómo identifica el servidor de forma única las solicitudes de un cliente en particular durante un período de tiempo como t1, t2, t3?

Navegué por la web y encontré términos como id de sesión, reescritura de URL y cookies. Pero sería genial si alguien lo explica de una mejor manera. Específicamente, ¿qué parte de la solicitud y respuesta HTTP se utilizaría para el seguimiento de la sesión?


Como mencionó, las formas comunes de implementar el seguimiento de sesión HTTP incluyen la reescritura de URL y las cookies. El seguimiento de sesión básicamente requiere que se mantenga un ID de sesión en múltiples solicitudes al servidor. Esto significa que cada vez que un cliente determinado realiza una solicitud al servidor, pasa el mismo ID de sesión. El servidor puede usar este ID para buscar la información de sesión que mantiene.

Cuando utiliza cookies, el servidor le pide al cliente que almacene una cookie configurando el encabezado de respuesta HTTP Set-Cookie . Esta cookie contiene el ID de sesión único asignado a ese cliente; en este ejemplo, la cadena ''ABAD1D'':

Set-Cookie: JSESSIONID=ABAD1D;path=/

Luego, el cliente envía la cookie al servidor mediante el encabezado de solicitud HTTP de la Cookie en cada solicitud y, por lo tanto, se informa al servidor sobre cada solicitud de la ID de sesión asignada actualmente al cliente.

Cookie: JSESSIONID=ABAD1D

Cuando se utiliza la reescritura de URL, esta misma ID de sesión se envía en algún lugar de la URL. De nuevo, el servidor extrae el ID de sesión de la URL para que pueda buscar la sesión de un cliente en particular:

http://my.app.com/index.jsp;JSESSIONID=ABAD1D

Sin embargo, el servidor también debe asegurarse de que cualquier URL en las páginas web enviadas al cliente también se reescriba para contener esa ID de sesión de clientes en particular. Como el ID de sesión está codificado en las URL, este método de seguimiento de sesión es transparente para el navegador. A menudo, un servidor recurrirá a la reescritura de URL si encuentra que no puede establecer una cookie de sesión en el cliente, lo que implica que el cliente no admite / permite cookies.

Tenga en cuenta que las sesiones pueden expirar. Esto significa que si el servidor no ''ve'' un ID de sesión determinado durante un período de tiempo, puede eliminar los datos de la sesión para preservar los recursos.


El seguimiento de la sesión es una cosa del lado del servidor.

Un servidor web emite algún identificador de sesión que se devuelve al navegador. El navegador envía este identificador de sesión junto con cada solicitud.

Esto probablemente se hace utilizando cookies de forma transparente para el usuario.


Encuentra suficientes detalles here

Las sesiones HTTP son el enfoque recomendado. Una sesión identifica las solicitudes que se originan en el mismo navegador durante el período de conversación. Todos los servlets pueden compartir la misma sesión. El servidor genera el JSESSIONID y se puede pasar al cliente a través de las cookies, la reescritura de la URL (si las cookies están desactivadas) o el mecanismo SSL incorporado. Se debe tener cuidado de minimizar el tamaño de los objetos almacenados en la sesión y los objetos almacenados en la sesión deben ser serializables. En un servlet de Java, la sesión se puede obtener de la siguiente manera:

HttpSession session = request.getSession (); // devuelve la sesión actual o una nueva sesión

Las sesiones pueden agotarse (configurarse en web.xml) o invalidarse manualmente.



el manejo de la sesión en la mayoría de los casos se maneja enviando una cookie al cliente. esa cookie se devolvería al servidor en cada solicitud de ese cliente en particular.

El session id se asociará con algunos recursos en el lado del servidor (archivo, espacio RAM), de modo que el servidor, al leer el session id en la cookie, puede encontrar este recurso y luego saber qué cliente era.