Das deaktivieren der client-cache von Jetty-server, die für REST-Anforderungen
Ich habe einen REST-Java-server implementiert, mit dem Trikot läuft, auf dem Anlegesteg. Es scheint, dass bestimmte Browser (IE7) intern speichert alle Anfragen an den server.
Was ich gerne tun würde, ist senden Sie einen bestimmten HTTP-header in der Antwort des REST-Servers angibt, der browser, das sollte kein cache, die Antwort, und so wird die Abfrage der server wieder, das nächste mal braucht es den Zugriff auf die Ressource.
Irgendwelche Ideen auf, wie zu konfigurieren, Jersey/Jetty für diese?
Oder der einzige Weg, es zu konfigurieren ist client-Seite?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, Nein. Nein!
Die Verwendung des pragma-header zu deaktivieren client side caching ist falsch, es ist ein request-header und hat null Effekt auf die Reaktion.
http://www.mnot.net/cache_docs/#PRAGMA
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32
Auch die Einstellung Expires: 0 ist nicht korrekt, Erlischt sein sollte, ein Datum, das nicht nur eine Anzahl von Sekunden, aber diese wird Arbeit als eine ungültige http-Datum interpretiert wird als "schon abgelaufen"
http://www.mnot.net/cache_docs/#EXPIRES
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
Pragma: no-cache
response-header sowie eineCache-Control: no-store
Antwort-header bei der Erteilung einer access-token.Es nichts, was Sie darüber tun können, rogue-clients, aber Jetty senden können, die appopriate HTTP-Header. Versuchen hier für Informationen über die Konfiguration der Last-Modified-und Cache-Control-Header.
Auf der server-Seite, können Sie versuchen, diese, wenn Sie Zugriff auf die Antwort (die Sie vielleicht in der Lage sein, es zu tun durch filtern).
Anderen trick, können Sie versuchen, auf der client-Seite ist das hinzufügen eines überflüssigen argument an die url, wie "http://www.company.com/services/staff?id=xxx&requestTime="+(new Date()).getTime(); auf Diese Weise die url-Anforderung ist jedes mal anders und es kann nicht zwischengespeichert werden.
@Dave Cheney: nun, was ich verstehe, aus http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 ist, dass Cache-control macht Sinn für die Anfrage sowie die Antwort. Und wenn dann die Antwort ist eine cache-gesteuerten Reaktion, es ist eine Spezifikation für das, was der client (browser) sollte das tun, mit der Ressource (siehe nächsten Abschnitt 14.9.1).
@alle: Auch die, in Abschnitt 14.21 des gleichen Dokuments es ist angegeben, dass der Expires-header gesetzt auf 0 bedeutet 'invalid date' und können ignoriert werden, indem der Kunden. Und meine tests mit dem senden einer Ablauf Datum 1 jan 1970 (timestamp 0) bewirkt nichts, ignorieren aber vom IE (und ff für diese Angelegenheit), die immer noch die Antwort Zwischenspeichern.
War meine Lösung zu senden, das aktuelle Datum für Expires-Feld, das ist, was die Spezifikation sagt.