jeudi 26 février 2015

Ajax funktioniert nicht mehr nach Session-Timeout?

Schönen guten Abend,



ich weiß leider nicht, ob ich hier komplett richtig bin, da an meinem Problem etwas mehr als nur der JavaScript an sich hängt.



Folgendes Setup: Ich habe eine Website, die per Spring MVC arbeitet. Also Controller, die gewisse URLs überwachen und dann auf die entsprechenden Aufrufe reagieren, indem sie die JSP-Views bereitstellen.



Nun hab ich auf mehreren Steiten JavaScripte eingebunden, die ajax-Aufrufe machen. Ich bin leider noch neu in der ganzen Thematik und bin daher leider noch nicht so vertraut mit der ganzen Funktionsweise.

Soweit ich es verstanden habe schickt der ajax-Auruf einfach einen POST-Aufruf mit gewissen RequestParametern und das Ganze landet dann wieder bei meinem Controller.

Wenn ich das jetzt richtig verstanden habe kriegt dann der Auruf des Ajax die Antwort vom Controller, bei mir in Form von einer JSP-Datei. Zumindestens steht bei dem $.ajax-Aufruf unter success: function(html) ... und dieser htlm-Parameter(?) wird dann auf der Seite an ein entsprechendes <div> element mit .append(html) gehängt.



So weit so gut, das Ganze funktioniert auch wunderbar etc.

Allerdings muss ich folgendes Verhalten feststellen: Wenn ich lange inaktiv auf der Seite bin (hab den Session-Timeout bei mir mittlerweile auf 1min konfiguriert, zum Testen) und dann ein Element anklicke, dass so einen Ajax-Auruf ausführt ... dann werde ich zunächst erstmal wieder auf meine Login-Seite redirected. Ich loge mich dann neu ein und muss festestellen, dass der Ajax-Aufruf, mit dem ich den Session-Timeout getriggert habe, nicht mehr funktioniert sondern bei mir anstatt dem, was er anzeigen soll, meine overview.html (Hauptseite) dahin klatscht, wo eig. sonst die richtige View ist.

Das geht dann auch nicht mehr weg, ich kann mich ein und ausloggen wie ich will (also neue Session-ID verteilen), dieser Ajax-Aufruf gibt immer nurnoch Müll zurück. Der einzige Weg das zu fixen, ist es den Browser neuzustarten. (Interessanterweise gibt es das Problem im IE nicht, in Chrome und FF allerdings schon)



Alle anderen Ajax-Scripte, mit denen ich nicht diesen Session-Timeout provoziert habe funktionieren weiterhin. Wenn ich den Session-Timeout auslöse indem ich auf einen normalen Link klicke zB funktionieren auch alle Ajax-Scripte weiterhin.

Nur wenn ich halt mit einem Ajax-Aufruf diesen Timeout auslöse funktioniert genau dieser nicht mehr.



Interessant ist, dass, sofern ich dem Log entnehmen kann, mein Controller, der normalerweise von dem Ajax-Aufruf angesprochen wird, nicht mehr erreicht wird (keine entsprechende Debug-Ausgabe im Log).



Ich muss gestehen, dass ich gerade gar nicht weiß, was genau mein Controller noch überprüft. Ich werde das direkt morgen nachschauen, rechne aber irgendwie nicht damit, dass ich dort irgendetwas finden kann.



Hat jemand so ein Verhalten schon mal beobachtet? Ich weiß, dass es eine größere Thematik gab mit Ajax und Session-Timeout, wo die Leute fragten, wie sie dafür sorgen können, dass sie entsprechend redirected werden.

Allerdings werde ich ja korrekt zum Login redirected. ( Ich muss gestehen, dass ich nicht weiß, wer oder was dafür sorgt. Ich nehme stark an, dass das die Hybris-Plattform, auf der die Website basiert, übernimmt. Muss ich mir auch noch mal genauer anschauen ).



Danke schon mal fürs Durchlesen und ich wünsche noch einen entspannten Abend :)





Ajax funktioniert nicht mehr nach Session-Timeout?

Aucun commentaire:

Enregistrer un commentaire