Rubber ducking about stuff.
Scritto il 24/01/2011 da Alessandro Martin.
La gestione delle sessioni è uno dei meccanismi che sta alla base di moltissime applicazioni web, ed in particolare nelle applicazioni e-commerce. Qualche volta è anche motivo di grossi mal di testa per chi si occupa di SEO.
HTTP Il protocollo HTTP è un protocollo stateless: non richiede che il server si ricordi informazioni su ciascun client per più di una richiesta. Dal punto di vista del protocollo una sessione inizia nel momento in cui il client effettua una richiesta e termina quando il server ha risposto a tale richiesta. Il protocollo HTTP ha la memoria corta. Spesso però gli utenti hanno bisogno che l’applicazione si ricordi di loro fra una richiesta e l’altra, per diversi motivi.
L’esempio più classico che abbiamo di fronte tutti i giorni è la gestione del carrello l’applicazione web deve tenere memoria dei prodotti scelti dall’utente per rendere possibile il processo d’acquisto. Per “allungare la memoria” nella comunicazione tra client e server le applicazioni web possono utilizzare diverse tecniche, ma la più diffusa (almeno dal 1994 ad oggi) sono i cookie.
All’interno di un cookie è possibile memorizzare un ID che identifichi in modo univoco un certo utente e tutti i dati relativi alla sua sessione di navigazione. Allungare la memoria del protocollo HTTP permette anche di fare altre cose interessanti, ad esempio consente di proporre prodotti correlati a quelli già visti in precedenza.
I motori di ricerca in generale e Google in particolare di norma non accettano i cookie, ovvero si comportano come un utente qualunque il cui browser sia impostato in modo da ignorare i cookie. Ho detto di norma perché nulla vieta a Googlebot in particolari condizioni di fingere di essere qualcun altro e di modificare il suo comportamento allo scopo di individuare comportamenti scorretti.
L’applicazione web ideale dovrebbe:
Si tratta prima di tutto di un approccio di buon senso: se qualcuno viaggia con i cookie disabilitati è probabilmente anche in grado di riabilitarli se viene data una buona motivazione. In realtà applicazioni anche piuttosto sofisticate si comportano nei modi più vari di fronte ad un client che non accetta i cookie:
Se si sta sviluppando una applicazione web è sempre bene seguire l’approccio del progressive enhancement:
Progressive enhancement uses web technologies in a layered fashion that allows everyone to access the basic content and functionality of a web page, using any browser or Internet connection, while also providing those with better bandwidth or more advanced browser software an enhanced version of the page. Wikipedia
Se invece si deve ottimizzare una piattaforma esistente: