Frage

Ich stelle fest, dass ein Benutzer meine Website zum ersten Mal besucht jsessionid, anstatt sich auf das Cookie zu verlassen, um Informationen zu Sitzung zu erhalten.

Der Cookie wird erfolgreich eingestellt, und wenn der Benutzer einfach die Seite neu lädt, die jsessionid wird nicht mehr an die URLs angehängt. Sie können dies hier testen: pixlshare.com. Wenn Sie über die Bildlinks schweben, wird eine URL mit a angezeigt jsessionid; Laden Sie die Seite neu und die jsessionids wird entfernt.

Aus früheren Erfahrungen mit der Wicket SEO -Seite Ich weiß, wie man das entfernen jsessionid Es vor Bots zu verbergen, aber diese Technik für reguläre Benutzer zu verwenden, scheint ein Hack zu sein. Es wird auch die Website für diejenigen Personen brechen, die paranoid genug sind, um Kekse deaktiviert zu haben.

Dies geschieht nach einem kürzlichen Umzug nach Tomcat von Glassfish, obwohl ich nicht sicher sagen kann, dass dies die Ursache ist. Außerdem verwende ich Apache's Mod_proxy vor Tomcat.

War es hilfreich?

Lösung

Hier ist, was passiert: Der Kunde fordert zum ersten Mal eine Seite an und sendet überhaupt keine Cookies:

$ curl -v http://pixlshare.com/upload

Der Server weiß basierend auf dieser Anfrage nichts über Clientfunktionen, insbesondere, ob er Cookies unterstützt oder nicht. Um besonders sicher zu sein, sendet es daher beide Keks und JSESSIONID in der URL codiert:

< Set-Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C; Path=/; HttpOnly
...
<a wicket:id="image1Link" href="gallery/OKfzVk;jsessionid=25E7A6C27095CA1F560BCB2983BED17C">

Mit anderen Worten, der Servlet Container endet defensiv an JSESSIONID Für jede URL, nur für den Fall, dass der Kunde Cookies nicht unterstützt.

Also warum das JSESSIONID Auf der zweiten Anfrage verschwindet? Denn jetzt sendet der Client das Cookie in der HTTP -Anforderung und der Server weiß, dass der Client sie behandelt. Davon abgesehen, JSESSIONID wird nicht mehr benötigt.

$ curl -v -b JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C http://pixlshare.com/upload
> Cookie: JSESSIONID=25E7A6C27095CA1F560BCB2983BED17C
...
<a wicket:id="image1Link" href="gallery/OKfzVk">

Wenn der Client auf der anderen Seite keine Cookies unterstützt, schreibt der Server weiterhin URLs um.

Dies ist kein Wicket -Problem, dies ist eine Tomcat -Funktion.


Übrigens (von Ihrer Website JavaScript):

path = path.replace(/^C:\\fakepath\\/i, '');

Was die Fälschung?

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