Indice articoli
"JSESSIONID"
Per capire che cosa è il JSESSIONID e a che cosa serve occorre prima capire cosa si intende con “sessione“.
In una rete informatica la sessione rappresenta un dialogo di scambio semi-permanente di informazioni tra due o più dispositivi o tra computer e utente.
Una sessione viene stabilita in un certo istante nel tempo, e viene distrutta in un certo istante successivo. Una sessione di comunicazione può coinvolgere più di un messaggio in ogni direzione.
Tipicamente (ma non sempre) una sessione è “stateful” ovvero almeno uno dei soggetti comunicanti necessita di salvare informazioni relativamente alla comunicazione per fare in modo che la comunicazione stessa possa avvenire.
Grazie alla sessione possono essere mantenute, ad esempio, informazioni sullo specifico utente autenticato in un forum o che sta partecipando ad un gioco oppure le informazioni dell’utente e dei suoi acquisti durante l’intera procedura di scelta e acquisto di prodotti in un sito di e-commerce.
Senza l’utilizzo della sessione le cose si farebbero molto più complicate e articolate poiché normalmente la comunicazione nel web avviene tramite protocollo HTTP che è un protocollo “stateless”, ovvero ogni singola richiesta non lascia alcuna informazione sul server.
Se la sessione rappresenta appunto un meccanismo utilizzato per memorizzare i dati della comunicazione tra client e server, il JSESSIONID rappresenta un identificatore univoco attraverso il quale il server può riconoscere lo specifico utente a cui è associata una determinata sessione.
In termini più generali si dovrebbe parlare anzichè di JSESSIONID, di HTTP session token.
Normalmente il client memorizza un codice univoco inviato dal server, chiamato HTTP session token, all’interno di un cookie. Questo token viene inviato ad ogni richiesta dell’utente in modo che il server possa riconoscere quale è la sessione associata a tale token e ottenere tutte le eventuali informazioni memorizzate durante la navigazione dell’utente.
Dunque mentre tutte le informazioni della comunicazione tra client e server sono memorizzate nella sessione su server, il client si occupa solo di inviare il token univoco memorizzato nel cookie.
Questo token prende il nome di PHPSESSID nel caso di applicazioni web sviluppate in PHP, di ASPSESSIONID in caso di applicazioni ASP e di JSESSIONID in caso di applicazioni web sviluppate in lingiaggio JAVA.
Pertanto il JSESSIONID non è che una specifica implementazione dell’ HTTP session token in ambiente JAVA.
Veniamo ora al nocciolo della questione: come mai il JSESSIONID compare all’interno delle url e viene indicizzato dai motori di ricerca?
Come saprete sui browser degli utenti vi è la possibilità di disabilitare i cookie. Questo impedirebbe ad alcune applicazioni web di funzionare correttamente dato che senza il cookie contenente il token, il server non avrebbe modo di riconoscere quale è la sessione memorizzata per lo specifico utente.
Tramite apposite tecniche di rewrite url (o url rewriting) è possibile fare in modo che qualora la richiesta arrivi da un browser con cookie disabilitati, il token venga appeso alle url anziché memorizzato in un cookie.
Utilizzando ad esempio i tag <c:url> o <c:redirect> della tag library JSTL il rewrite url che appende il JSESSIONID viene eseguito automaticamente.
In tal caso le url somiglierebbero a qualcosa del tipo
http://www.mioDominio/home.jsp;jsessionid=858E118F048008FF291355969D581130.mia-app
Tutto ciò può diventare un problema quando entrano in gioco i motori di ricerca.
Gli spider dei motori di ricerca non accettano cookie e di conseguenza ogni volta che uno spider viene a far visita al nostro sito rileverà una url differente (JSESSIONID differente) per lo stesso contenuto.
Come sappiamo la duplicazione dei contenuti non è una buona cosa in ambito SEO e ad ogni modo una url come quella sopra riportata non è una url SEO friendly.
Ora che abbiamo idea di cosa è il JSESSIONID, pur non essendoci spinti in dettagli tecnici, possiamo già intuire qualcosa a riguardo di ciò che affronteremo nel prossimo articolo dedicato ai pro e ai contro dell’eliminazione del JSESSIONID dalle url.
Se siete interessati invece a qualche dettaglio tecnico in più, possiamo continuare il discorso attarverso i commenti a questo post!