Come già accennato, i metodi più comuni per implementare il tracciamento della sessione HTTP includono la riscrittura degli URL e i cookie. Il tracciamento della sessione richiede fondamentalmente che un ID di sessione venga mantenuto su più richieste al server. Ciò significa che ogni volta che un determinato client effettua una richiesta al server, passa lo stesso ID di sessione. Il server può utilizzare questo ID per cercare le informazioni sulla sessione che gestisce.
Quando si utilizzano i cookie, il server chiede al client di memorizzare un cookie impostando l'intestazione della risposta HTTP Set-Cookie
. Questo cookie contiene l'ID di sessione univoco assegnato a quel cliente - in questo esempio la stringa 'ABAD1D':
Set-Cookie: JSESSIONID=ABAD1D;path=/
il cookie viene poi inviato al server da parte del client utilizzando la richiesta di intestazione Cookie
HTTP su ogni richiesta e quindi il server è informato su ogni richiesta dell'ID di sessione attualmente assegnato al client.
Cookie: JSESSIONID=ABAD1D
Quando si utilizza la riscrittura dell'URL, questo stesso ID di sessione viene invece inviato da qualche parte nell'URL. Anche in questo caso, il server estrae l'ID di sessione dall'URL in modo che possa occhiata la sessione per un particolare client:
http://my.app.com/index.jsp;JSESSIONID=ABAD1D
Tuttavia, il server deve anche fare in modo che tutti gli URL delle pagine web inviate al client vengono riscritti anche per contenere quel particolare ID di sessione dei client. Poiché l'ID della sessione è codificato negli URL, questo metodo di tracciamento della sessione è trasparente per il browser. Spesso un server ricorre alla riscrittura degli URL se trova che non è in grado di impostare un cookie di sessione sul client, il che implica che il client non supporta/accetta i cookie.
Si noti che le sessioni possono scadere. Ciò significa che se il server non "vede" un dato ID di sessione per un periodo di tempo, può rimuovere i dati della sessione per conservare le risorse.
Grazie per le informazioni .. :) – dexter
@RickNZ non perdere la fiducia in SO - Non ho copiato la tua risposta. Se controlli le mie revisioni vedrai che ho iniziato spiegando le sessioni HTTP. Ho quindi dedicato un po 'di tempo a controllare i formati di esempio di JSESSIONID sia in cookie che in URL e a confermare i nomi delle intestazioni HTTP. Ho poi aggiunto questi al mio post quando ero sicuro che fossero corretti. Non è sorprendente che domande come questa porteranno a risposte simili ma se ti senti ancora lesa voterò volentieri per cancellare la mia risposta. – teabot
@teabot: nessun problema; Va tutto bene. – RickNZ