Como mencionaste, las formas más 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 una ID de sesión entre varias solicitudes al servidor. Esto significa que cada vez que un cliente determinado realiza una solicitud al servidor, pasa la misma ID de sesión. El servidor puede usar esta ID para buscar la información de la sesión que mantiene.
Al usar cookies, el servidor le pide al cliente que almacene una cookie configurando el encabezado de respuesta HTTP Set-Cookie
. Esta cookie contiene el identificador de sesión único asignado a ese cliente - en este ejemplo la cadena 'ABAD1D':
Set-Cookie: JSESSIONID=ABAD1D;path=/
La cookie se envía de vuelta al servidor por el cliente utilizando el encabezado de la solicitud Cookie
HTTP en cada solicitud y por lo tanto, al servidor se le informa en cada solicitud la ID de sesión actualmente asignada al cliente.
Cookie: JSESSIONID=ABAD1D
Al utilizar la reescritura de URL, esta misma ID de sesión se envía en algún lugar de la URL. Una vez más, el servidor extrae el identificador de sesión de la dirección URL para que pueda buscar la sesión para un cliente en particular:
http://my.app.com/index.jsp;JSESSIONID=ABAD1D
Sin embargo, el servidor también debe asegurarse de que todas las URL de las páginas web envían de vuelta al cliente también se reescriben para contener la ID de sesión de ese cliente 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 descubre 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 caducar. Esto significa que si el servidor no 've' una ID de sesión determinada durante un período de tiempo, puede eliminar los datos de la sesión para conservar los recursos.
Gracias por la información .. :) – dexter
@RickNZ no pierda la fe en SO - No he copiado su respuesta. Si revisas mis revisiones, verás que comencé explicando las sesiones HTTP. Luego pasé un tiempo verificando formatos de ejemplo de JSESSIONID tanto en las cookies como en las URL, y confirmando los nombres de los encabezados HTTP. Luego agregué estos a mi publicación cuando estaba seguro de que eran correctos. No es de extrañar que preguntas como esta arrojen respuestas similares, pero si aún se siente ofendido, con mucho gusto votaré para eliminar mi respuesta. – teabot
@teabot: sin preocupaciones; está todo bien. – RickNZ