# location response-header? Browser-Back-Button "deaktivieren"



## JanHH (12. Aug 2009)

Hallo,

hab das schonmal andernorts gefragt, wurde da auf das, was im Titel steht, hingewiesen.

Es geht darum, dass der back-Button des browsers quasi "deaktiviert" werden soll (der Surfer soll nicht zur vorherigen Seite zurückgelangen können). Vorschlag: Zwischen Seite A und Seite B eine leere Seite zwischenschalten, die nichts weiter tut, als wieder nach B weiterzuleiten. Wenn man dann auf zurück klickt, wird man sofort wieder weitergeleitet. Wäre also die gewünschte Funktionalität.

Nur: Mit HTTP-EQUIV funktioniert es nicht. mit body onload=document.forms[0].submit (und natürlich einer Form in der Seite) funktioniert es, aber natürlich nur wenn javascript aktiviert ist.

Mir wurde da der location-Eintrag im response header vorgeschlagen. Sagt mir nun gar nichts. Was verbirgt sich dahinter, kann das funktionieren, und wie beeinflusse ich das vom Servlet aus?

Bin sonst auch für alternative Tipps, wie man das realisieren kann, dankbar.

Gruß+Danke
Jan


----------



## maki (12. Aug 2009)

Man könnte einmalige Tokens pro Request verwenden, dann merkt man schnell ob ein User den back Button benutzt hat.
Ansonsten könntest du mit einem JS Eventhandler auf den back Button reagieren und anstatt "Back" einfach nix machen.


----------



## JanHH (13. Aug 2009)

Der Browser holt sich die Seite doch aus dem Cache.. auf dem Server kommt meistens gar kein Request an.

Es bringt auch nix, es zu "merken", es soll einfach nicht möglich sein..


----------



## maki (13. Aug 2009)

> Es bringt auch nix, es zu "merken", *es soll einfach nicht möglich sein..*


Das geht aber nicht, willkommen im Web  Musst dich & deine Wünsche daran anpassen.
Ausser natürlich du nutzt den JS Eventhandler, aber ob der überall funktioniert?


----------



## JanHH (13. Aug 2009)

Mir ist auch klar dass es "eigentlich" nicht geht. Aber es gibt genug Beispiele, wo es dann doch irgendwie hinbekommen wurde, dass Auftraggeber denken, es würde halt doch gehen (und es zu einer häufigen Standardanforderung machen). Ziemlich doof, aber so ist das halt. Glücklicherweise weiss ich, dass mein Kunde im Zweifel mit der body onLoad-Lösung zufrieden ist (weil er damit leben kann, das javascript eine Voraussetzung ist). Aber werde noch dem ServletResponst.sendRedirect eine Chance geben.


----------



## maki (13. Aug 2009)

Den sendRedirect halte ich persönlich für eine Schnappsidee 
Mit JSF wird das wohl nix.


----------



## JanHH (13. Aug 2009)

Soll ja auch nicht, es handelt sich um ein stinknormales Servlet, fernab von jedem Webframework.


----------



## JanHH (13. Aug 2009)

Aber ist auch egal, denn es funktioniert damit eh nicht :/.


----------



## HLX (13. Aug 2009)

Das hat mit der serverseitigen Technologie überhaupt nichts zu tun. Der Browser muss den Event Abfangen bevor die Kommunikation mit dem Server geschieht, egal ob da Servlets, JSP-Seiten oder PHP-Skripte laufen. Alles andere führt zu einem Neuladen der Seite - auch wenn du es schaffst wieder die vorherige Seite anzusteuern ist das ganze höchst fehleranfällig.

Wenn dein Auftraggeber so etwas irgendwo gesehen hat, war es mit ziemlicher Sicherheit JavaScript. Erkläre ihm das.

JS ist im Übrigen mittlerweile schon fast üblich geworden im Web.


----------



## JanHH (13. Aug 2009)

Jo, klar.. Lösungen mit JS existieren, das krieg ich auch hin. War aber auf der Suche nach einer "allgemeinen", die das auch so kann. Aber die scheint es nicht zu geben.

Gibt es denn ein Event "der Benutzer hat auf den Back-Button geklickt", den man innerhalb der HTML-Seite mit JS abfangen kann, BEVOR der Browser aktiv wird und die alte Seite wieder anzeigt?


----------

