Andreas Miller: Cache loeschen

Hallo,
ich versuche zur Zeit eine gmx-aehnliches System fuer
unser Intranet zu programmieren. Man kann sich also ueber
den Browser mit Name und Passwort einloggen, mailen usw.
Um die Sicherheit moeglichst gross zu halten, wird bei
erfolgreichem Einloggen ein Link auf das eigentliche
Mailverzeichnis gesetzt und nach dem Ausloggen wieder
geloescht. Leider ist es trotzdem moeglich ueber den
back-button wieder auf die angeschauten Seiten zurueck-
zukehren. Es erscheint dann zwar die Meldung:
Data Missing
This document resulted from a POST operation and has
expired from the cache. If you wish you can repost the
form data to recreate the document by pressing the
reload button.
Wenn man den reload-button drueckt ist wieder alles da.
Ich habe schon das cachen im Meta-Teil mittels
  <META HTTP-EQUIV="Expires" CONTENT="Fri, Jun 12 1981 08:20:00 GMT">
  <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
  <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
ausgeschalten (hoffe das stimmt so, habe es irgendwo hier
im Forumsarchiv gefunden).
Man kann nur auf die schon angeschauten Seiten zurueck,
bei den anderen bringt er die richtige Fehlermeldung, dass
die Datei nicht existiert.
Meine Frage ist nun: Gibt es eine Moeglichkeit den Cache
zu leeren, bspw. mit Javascript? Oder kann man den back-
button irgendwie disablen, so als waere man nirgendwoher
gekommen? So wie ich die Sache sehe ist das wohl ein
clientseitiges Problem also eher mit Javascript oder
aehnlichem zu loesen, als mit Perl auf Serverseite!?!
Vielen Dank schon mal,
Gruss Andreas

  1. Hi,

    Meine Frage ist nun: Gibt es eine Moeglichkeit den Cache
    zu leeren, bspw. mit Javascript? Oder kann man den back-
    button irgendwie disablen, so als waere man nirgendwoher
    gekommen? So wie ich die Sache sehe ist das wohl ein
    clientseitiges Problem also eher mit Javascript oder
    aehnlichem zu loesen, als mit Perl auf Serverseite!?!

    nein, das geht nicht; und Deine Schlußfolgerung ist genau die verkehrte :-)

    Da es sich um serverseitige Datenbestände handelt, die durch einen Reload beeinflußt werden können, muß(!) die Sicherung auch serverseitig passieren. Alles andere ist selbst in einem strengstens definierten Intranet Humbug, weil clientseitige Aktionen _immer_ von Client zu Client unterschiedlich ablaufen. Und sei es nur, weil durch einen klitzekleinen Ladefehler die Cacheabschaltung nicht funktioniert hat.

    Was immer also Deine genauen Probleme sind, konzentriere Dich darauf, sie serverseitig zu lösen. Dabei kannst Du natürlich, wenn Du es geschickt machst, auch die Clientseite benutzen, z.B. indem Du Formularen ein '<input type="hidden" name="timestamp-ID" value="' . time . $$ . '">' (hier Perl-Syntax) mitlieferst. Dieses ist entweder falsch oder eindeutig.

    Cheatah

    1. Hallo und Danke erstmal,

      leider habe ich Deinen Rat nicht so ganz verstanden.
      So wie ich ihn bisher verstanden habe, glaube ich nicht,
      dass er mir weiterhelfen wird. Denn die Datei ist ja
      auf dem Server geloescht, da gibt es nix zu ruetteln,
      aber ueber den back-button kann man trotzdem die Mails
      des Vorgaengers lesen. Natuerlich verstehe ich Deinen
      Einwand, jeder Client sei anders, aber man kann sich
      nur einloggen, wenn der Client javascript unterstuetzt.
      Natuerlich werde ich Deinen Tip mit der Timestamp
      weiterdenken und da ist mir auch gleich die naechste
      Frage eingefallen: Kann man Post-hidden-Formulare abschicken,
      ohne dass ein button gedrueckt wird? (Denke da an Metaeintrag
      oder Wertevorbelegung).

      Ciao, Andreas

      1. Hi,

        leider habe ich Deinen Rat nicht so ganz verstanden.

        ich habe eigentlich auch keinen konkreten Rat gegeben... :-)

        So wie ich ihn bisher verstanden habe, glaube ich nicht,
        dass er mir weiterhelfen wird. Denn die Datei ist ja
        auf dem Server geloescht, da gibt es nix zu ruetteln,
        aber ueber den back-button kann man trotzdem die Mails
        des Vorgaengers lesen.

        Aha, _das_ ist Dein Problem! Das hatte ich falsch verstanden; üblicherweise geht es bei solchen Fragen darum, das doppelte Abschicken eines Formulars (und die serverseitigen Konsequenzen) zu verhindern.

        aber man kann sich
        nur einloggen, wenn der Client javascript unterstuetzt.

        Nun, in dem Fall könntest Du mit location.replace() arbeiten, welches den aktuellen History-Eintrag durch einen neuen ersetzt; oder (würde ich persönlich bevorzugen) die Mails in einem neuen Fenster öffnen lassen, welches der Benutzer schließen _muß_, um weiterzuarbeiten. Dazu könntest Du z.B. sämtliche Navigationselemente (insbesondere Locationbar) ausschalten und regelmäßig den Fokus auf dieses Fenster setzen (window.setInterval("self.focus();", 1000) o.ä.).

        Die Feinheiten überlege Dir bitte selbst; es gibt da sicher noch einiges, was ich jetzt nicht beachte.

        Kann man Post-hidden-Formulare abschicken,
        ohne dass ein button gedrueckt wird?

        document.forms[x].submit() funktioniert, wenn die Action des forms[x] nicht mailto ist.

        (Denke da an Metaeintrag oder Wertevorbelegung).

        Hm?

        Cheatah