Heim >Web-Frontend >js-Tutorial >Warum speichert Safari POST-Anfragen in iOS 6 trotz Cache-Kontrolleinstellungen im Cache?

Warum speichert Safari POST-Anfragen in iOS 6 trotz Cache-Kontrolleinstellungen im Cache?

Susan Sarandon
Susan SarandonOriginal
2024-11-09 16:22:02809Durchsuche

Why Does Safari Cache POST Requests in iOS 6 Despite Cache Control Settings?

Safari-Cache-Rätsel in iOS 6

Die Einführung von Safari in iOS 6 hat Bedenken hinsichtlich der Cache-Verarbeitung für $.ajax-Aufrufe aufgeworfen. Insbesondere werden POST-Anfragen, die innerhalb einer PhoneGap-Anwendung gestellt werden, zwischengespeichert, obwohl die Cache-Eigenschaft explizit auf „false“ gesetzt ist.

Die Grundursache

Nach gründlicher Untersuchung wurde festgestellt, dass Safari speichert POSTs selektiv basierend auf den folgenden Kriterien zwischen:

  • Das Fehlen von Cache-Control Header
  • Das Vorhandensein von „Cache-Control: max-age=0“ und eines sofortigen „Expires“-Headers

Gemäß der HTTP-Spezifikation sind POST-Antworten im Allgemeinen nicht zwischenspeicherbar . Safari unter iOS 6 scheint jedoch eine Bestimmung auszunutzen, die das Caching mit entsprechenden Cache-Control- oder Expires-Headern ermöglicht.

Die Problemumgehung

Um zu verhindern, dass Safari POST zwischenspeichert Bei Anfragen muss in den Antwortheadern „Cache-Control: no-cache“ eingestellt werden. Dadurch wird sichergestellt, dass Safari die Cache-Bypass-Anweisung berücksichtigt.

Für eine globale Lösung, die für alle POSTs gilt, fügen Sie den folgenden Code zur Serverkonfiguration hinzu:

<code class="apache">Header set Cache-Control "no-cache"</code>

Wenn Sie nur deaktivieren möchten Zum Caching für bestimmte POSTs können Sie den folgenden Code verwenden:

<code class="apache">SetEnvIf Request_Method "POST" IS_POST
Header set Cache-Control "no-cache" env=IS_POST</code>

Hinweis: Safari speichert weiterhin POST-Anfragen zwischen wenn die Anfrageparameter gleich bleiben. Um Caching zu vermeiden, ändern Sie die Anforderungsparameter bei jedem Aufruf. Alternativ können Sie einen zufälligen Parameter an die Anforderungs-URL oder die POST-Daten anhängen, um die Eindeutigkeit sicherzustellen.

Das obige ist der detaillierte Inhalt vonWarum speichert Safari POST-Anfragen in iOS 6 trotz Cache-Kontrolleinstellungen im Cache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn