Frage

Ich habe das immer als selbstverständlich angesehen JSESSIONID Cookie, das für jede neue Anfrage für einen bestimmten Client erstellt wird, wenn Anwendungen mithilfe der Servlet-Spezifikation entwickelt werden.Aber nachdem ich ein wenig darüber nachgedacht habe, ist es nicht logischer, dass der Servlet-Container nur einen Cookie-Header erstellt nach Die Sitzung wurde angefordert und im Code erstellt?Für Kunden, deren Cookies deaktiviert sind, wird dadurch nicht am Ende ein neues erstellt? HttpSession für jede gestellte Anfrage?

Bitte lassen Sie mich wissen, wenn die Frage noch unklar ist, damit ich sie bearbeiten kann.TIA.

War es hilfreich?

Lösung

Eine neue Sitzung wird vom Servlet-Container standardmäßig nicht erstellt, es sei denn, das Servlet erstellt sie tatsächlich explizit.Nur weil im Header eine JSEESIONID ausgefüllt wird, heißt das nicht, dass es eine Seesion auf dem Server geben muss.Eine Ausnahme hiervon bilden JSPs, die standardmäßig eine Sitzung erstellen, wenn keine vorhanden ist, es sei denn, <%@ page session="false" %>

Soweit Cookies nicht aktiviert sind:

Ein Webcontainer kann verschiedene Methoden verwenden, um eine Sitzung mit einem Benutzer zu verknüpfen, wobei alle eine Kennung zwischen dem Client und dem Server bestehen.Die Kennung kann als Cookie auf dem Client verwaltet werden, oder die Webkomponente kann die Kennung in jeder URL enthalten, die an den Client zurückgegeben wird.

Wenn Ihre Anwendung Sitzungsobjekte verwendet, müssen Sie sicherstellen, dass die Sitzungsverfolgung aktiviert ist, indem die Anwendung nach dem Ausschalten des Clients Cookies umschreibt.Sie tun dies, indem Sie die URL -Methode der Antwort auf alle URLs aufrufen, die von einem Servlet zurückgegeben werden.Diese Methode enthält die Sitzungs -ID in der URL nur, wenn Cookies deaktiviert sind.Andernfalls wird die URL unverändert zurückgegeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top