Question

Comme HTTP est un protocole sans état, lorsqu'un client fait un certain nombre de requêtes au serveur, comment le serveur identifie de façon unique une des demandes du client particulier sur une période de temps dire t1, t2, t3 ..

Je naviguaient et suis tombé sur des termes comme identifiant de session, réécriture d'URL et les cookies. Mais ce serait bien si quelqu'un explique d'une meilleure façon. Plus précisément quelle partie de la requête HTTP et la réponse serait utilisée pour le suivi de la session?

Était-ce utile?

La solution

Comme vous l'avez mentionné, les moyens communs pour mettre en œuvre le suivi des sessions HTTP inclut la réécriture d'URL et les cookies. Le suivi de session exige essentiellement qu'un identifiant de session est maintenue sur plusieurs requêtes au serveur. Cela signifie que chaque fois qu'un client donné fait une demande au serveur, il passe le même ID de session. Le serveur peut utiliser cet ID pour rechercher les informations de session, elle maintient.

Lors de l'utilisation des cookies, le serveur demande au client de stocker un cookie en configurant 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 requête HTTP Cookie sur chaque demande et donc le serveur est informé sur chaque demande l'ID de session actuellement attribué au client.

    Cookie: JSESSIONID=ABAD1D

Lorsque vous utilisez la réécriture d'URL, cette même ID de session est envoyé à la place quelque part dans l'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 ce numéro particulier de session de clients. Comme l'ID de session est codée dans les URL, cette méthode de suivi de session est transparente pour le navigateur. Souvent, un serveur recours à la réécriture d'URL si elle trouve qu'il est impossible de définir un cookie de session sur le client -. Ce qui implique que le client ne prend pas en charge / autoriser les cookies

Notez que les sessions peuvent expirer. Cela signifie que si le serveur ne « voir » une pièce d'identité de session donnée pour une période de temps, il peut supprimer les données de session pour préserver les ressources.

Autres conseils

  

Plus précisément quelle partie du HTTP   demande et la réponse seraient utilisés pour   le suivi de la session?

Dans la réponse HTTP, le serveur peut définir un cookie. Il le fait avec l'en-tête Set-Cookie. Par exemple:

Set-Cookie: session=12345; path=/

Le client retourne alors la valeur de tous les cookies qui correspondent aux propriétés qui ont été définies avec le cookie, ce qui peut inclure chemin (comme ci-dessus) et le domaine, et qui n'ont pas encore expiré.

Le cookie est envoyé au serveur dans le cadre des en-têtes HTTP. Par exemple:

Cookie: session=12345

Aucune des informations de propriété d'origine est renvoyé avec le cookie.

Un cookie unique permet au serveur d'associer une clé unique avec une instance de navigateur particulier. Le serveur peut alors utiliser cette clé comme un index dans une table de hachage ou une table de base de données qui contient des informations d'état unique par utilisateur.

Le suivi de session est une chose côté serveur.

Un serveur Web émet un certain identifiant de session qui est renvoyé au navigateur. Navigateur envoie cet identifiant de session ainsi que chaque demande.

Ceci est probablement fait en utilisant les cookies de manière transparente pour l'utilisateur.

Trouver suffisamment de détails href="http://www.sbalasani.com/2015/12/servlets-session-management.html"

HTTP Sessions sont l'approche recommandée. Une session identifie les demandes qui proviennent du même navigateur pendant la période de conversation. Tous les servlets peuvent partager la même session. Le JSESSIONID est généré par le serveur et peut être transmis au client par le biais des cookies, réécrivant URL (si les cookies sont désactivés) ou d'un mécanisme de SSL intégré. Des précautions doivent être prises pour réduire la taille des objets stockés en session et objets stockés en session doit être sérialisable. Dans une servlet Java la session peut être obtenue comme suit:

HttpSession session = request.getSession (); // retourne session en cours ou une nouvelle session

Les sessions peuvent être synchronisées sur (configurées dans web.xml) ou invalidé manuellement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top