1880 Stimmen

Wie können wir die Zwischenspeicherung von Webseiten in allen Browsern kontrollieren?

Unsere Untersuchungen haben gezeigt, dass nicht alle Browser die HTTP-Cache-Direktiven in einheitlicher Weise beachten.

Aus Sicherheitsgründen wollen wir nicht, dass bestimmte Seiten in unserer Anwendung zwischengespeichert werden, jemals, durch den Webbrowser. Dies muss mindestens mit den folgenden Browsern funktionieren:

  • Internet Explorer 6+
  • Firefox 1.5+
  • Safari 3+
  • Opera 9+
  • Chrom

Unsere Anforderung kam von einem Sicherheitstest. Nach dem Abmelden von unserer Website konnte man die Schaltfläche "Zurück" drücken und zwischengespeicherte Seiten anzeigen.

5voto

user2321638 Punkte 61

In meinem Fall habe ich das Problem in Chrome folgendermaßen gelöst

<form id="form1" runat="server" autocomplete="off">

wo ich den Inhalt eines vorherigen Formulars löschen muss, wenn der Benutzer aus Sicherheitsgründen auf die Schaltfläche "Zurück" klickt

5voto

JK. Punkte 20597

Die akzeptierte Antwort scheint für IIS7+ nicht zu funktionieren, wenn man von der großen Anzahl von Fragen ausgeht, die sich darauf beziehen, dass Cache-Header in II7 nicht gesendet werden:

Und so weiter

Die akzeptierte Antwort ist richtig in Bezug darauf, welche Header gesetzt werden müssen, aber nicht in Bezug darauf, wie sie gesetzt werden müssen. Dieser Weg funktioniert mit IIS7:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.AppendCacheExtension("no-store, must-revalidate");
Response.AppendHeader("Pragma", "no-cache");
Response.AppendHeader("Expires", "-1");

Die erste Zeile setzt Cache-control a no-cache und die zweite Zeile fügt die anderen Attribute hinzu no-store, must-revalidate

4voto

Tobias Punkte 61

Die Kopfzeilen in der Antwort von BalusC verhindern nicht, dass Safari 5 (und möglicherweise auch ältere Versionen) Inhalte aus dem Browser-Cache anzeigt, wenn die Zurück-Taste des Browsers verwendet wird. Eine Möglichkeit, dies zu verhindern, besteht darin, dem body-Tag ein leeres onunload-Eventhandler-Attribut hinzuzufügen:

<body onunload=""> 

Dieser Hack bricht offenbar den Back-Forward-Cache in Safari: Gibt es ein browserübergreifendes Onload-Ereignis beim Klicken auf die Schaltfläche "Zurück"?

4voto

Harry Punkte 5366

Zusätzlich zu den Kopfzeilen sollten Sie Ihre Seite über https . Bei vielen Browsern wird https standardmäßig nicht gecached.

4voto

petr k. Punkte 7910

Die besten und konsistentesten Ergebnisse in allen Browsern habe ich mit der Einstellung Pragma: no-cache

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X