Rumah >hujung hadapan web >tutorial js >Mengapa Safari Cache POST Permintaan dalam iOS 6 Walaupun Tetapan Kawalan Cache?

Mengapa Safari Cache POST Permintaan dalam iOS 6 Walaupun Tetapan Kawalan Cache?

Susan Sarandon
Susan Sarandonasal
2024-11-09 16:22:02811semak imbas

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

Safari Cache Conundrum dalam iOS 6

Pengenalan Safari dalam iOS 6 telah menimbulkan kebimbangan mengenai pengendalian cache untuk panggilan $.ajax. Khususnya, permintaan POST yang dibuat dalam aplikasi PhoneGap sedang dicache walaupun secara eksplisit menetapkan sifat cache kepada palsu.

Punca Punca

Selepas penyiasatan menyeluruh, didapati bahawa Safari secara selektif menyimpan POST berdasarkan kriteria berikut:

  • Ketiadaan Pengepala Cache-Control
  • Kehadiran "Cache-Control: max-age=0" dan pengepala "Expires" serta-merta

Selaras dengan spesifikasi HTTP, respons POST adalah secara amnya tidak boleh disimpan dalam cache. Walau bagaimanapun, Safari pada iOS 6 nampaknya mengeksploitasi peruntukan yang membenarkan caching dengan pengepala Cache-Control atau Expires yang sesuai.

Penyelesaian

Untuk menghalang Safari daripada menyimpan cache POST permintaan, adalah perlu untuk menetapkan "Cache-Control: no-cache" dalam pengepala respons. Ini memastikan Safari mematuhi arahan pintasan cache.

Untuk penyelesaian global yang digunakan pada semua POST, tambahkan kod berikut pada konfigurasi pelayan:

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

Jika anda hanya ingin melumpuhkan caching untuk POST tertentu, anda boleh menggunakan kod berikut:

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

Nota: Safari akan masih cache permintaan POST jika parameter permintaan kekal sama. Untuk mengelakkan caching, ubah suai parameter permintaan pada setiap panggilan. Sebagai alternatif, anda boleh menambahkan parameter rawak pada URL permintaan atau data POST untuk memastikan keunikan.

Atas ialah kandungan terperinci Mengapa Safari Cache POST Permintaan dalam iOS 6 Walaupun Tetapan Kawalan Cache?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn