Comme vous l'avez mentionné, les méthodes courantes pour implémenter le suivi de session HTTP incluent la réécriture d'URL et les cookies. Le suivi de session nécessite essentiellement qu'un ID de session soit conservé sur plusieurs demandes envoyées au serveur. Cela signifie qu'à chaque fois qu'un client fait une demande au serveur, il transmet le même ID de session. Le serveur peut utiliser cet ID pour rechercher les informations de session qu'il gère. Lorsque vous utilisez des cookies, le serveur demande au client de stocker un cookie en définissant l'en-tête de réponse HTTP Set-Cookie
. Ce cookie contient l'ID de session unique attribué à ce client - dans cet exemple, la chaîne « ABAD1D »:
Set-Cookie: JSESSIONID=ABAD1D;path=/
Le cookie est envoyé au serveur par le client en utilisant l'en-tête de demande Cookie
HTTP sur chaque demande et ainsi le serveur est informé sur chaque requête de l'identifiant de session actuellement affecté au client. Lorsque vous utilisez la réécriture d'URL, ce même ID de session est envoyé quelque part dans l'URL lors de l'utilisation de la réécriture d'adresses URL. Encore une fois, le serveur extrait l'ID de session de l'URL afin qu'il puisse rechercher la session pour un client particulier:
http://my.app.com/index.jsp;JSESSIONID=ABAD1D
Cependant, le serveur doit également vous assurer que toutes les URL dans les pages Web envoyées au client sont également réécrits pour contenir cet ID de session de clients particuliers. Comme l'ID de session est codé dans les URL, cette méthode de suivi de session est transparente pour le navigateur. Souvent, un serveur aura recours à la réécriture d'URL s'il ne parvient pas à définir un cookie de session sur le client, ce qui implique que le client ne prend pas en charge/n'accepte pas les cookies.
Notez que les sessions peuvent expirer. Cela signifie que si le serveur ne voit pas un ID de session donné pendant un certain temps, il peut supprimer les données de session pour préserver les ressources.
Merci pour l'info .. :) – dexter
@RickNZ ne perdez pas la foi en SO - Je n'ai pas copié votre réponse. Si vous vérifiez mes révisions, vous verrez que j'ai commencé par expliquer les sessions HTTP. J'ai ensuite passé du temps à vérifier les formats d'exemple de JSESSIONID dans les cookies et les URL, et à confirmer les noms d'en-tête HTTP. J'ai ensuite ajouté ceux-ci à mon poste quand j'étais sûr qu'ils étaient corrects. Il n'est pas surprenant que des questions comme celle-ci donnent des réponses similaires, mais si vous vous sentez encore lésé, je voterai volontiers pour supprimer ma réponse. – teabot
@teabot: pas de soucis; c'est parfait. – RickNZ