Saya diberitahu untuk mencegah bocornya info pengguna, hanya "tanpa cache" sebagai tanggapan tidak cukup. "tidak ada toko" juga diperlukan.
Cache-Control: no-cache, no-store
Setelah membaca spesifikasi ini http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html , saya masih belum yakin mengapa.
Pemahaman saya saat ini adalah bahwa ini hanya untuk server cache perantara. Meskipun "tanpa cache" sebagai respons, server cache perantara masih dapat menyimpan konten ke penyimpanan non-volatile. Server cache perantara akan memutuskan apakah menggunakan konten yang disimpan untuk permintaan berikut. Namun, jika "no-store" adalah responsnya, server cache perantara tidak seharusnya menyimpan konten. Jadi, ini lebih aman.
Apakah ada alasan lain mengapa kita membutuhkan "no-cache" dan "no-store"?
no-cache
tidak berarti apa yang Anda pikirkan. Sebenarnya, itu berarti "mohon validasi ulang".Jawaban:
Saya harus menjelaskan itu
no-cache
tidak berarti tidak menyimpan . Faktanya, ini berarti "validasi ulang dengan server" sebelum menggunakan respons cache apa pun yang mungkin Anda miliki, pada setiap permintaan.must-revalidate
, di sisi lain, hanya perlu melakukan validasi ulang jika resource dianggap sudah usang.Jika server mengatakan bahwa sumber daya masih valid maka cache dapat merespons dengan representasinya, sehingga mengurangi kebutuhan server untuk mengirim ulang seluruh sumber daya.
no-store
secara efektif penuh tidak direktif cache dan dimaksudkan untuk mencegah penyimpanan representasi dalam bentuk cache apa pun.Saya mengatakan apa pun, tetapi perhatikan ini di spesifikasi HTTP RFC 2616:
Tetapi ini dihilangkan dari spesifikasi HTTP RFC 7234 yang lebih baru dalam upaya untuk membuatnya
no-store
lebih kuat, lihat:http://tools.ietf.org/html/rfc7234#section-5.2.1.5
sumber
Cache-Control: no-store
cukup?no-store
dan menjelaskanno-cache
seolah-olah tidak ada cache sama sekali .... Saya bingung!Dalam keadaan tertentu, IE6 akan tetap menyimpan file meskipun
Cache-Control: no-cache
berada di header respons.The W3C menyatakan dari
no-cache
:Dalam aplikasi saya, jika Anda mengunjungi halaman dengan
no-cache
header, kemudian keluar dan kemudian menekan kembali di browser Anda, IE6 masih akan mengambil halaman dari cache (tanpa permintaan baru / validasi ke server). Menambahkanno-store
header akan menghentikannya. Tetapi jika Anda menerima kata-kata W3C, sebenarnya tidak ada cara untuk mengontrol perilaku ini:Perbedaan umum antara riwayat browser dan cache HTTP normal dijelaskan dalam sub-bagian spesifik spesifikasi .
sumber
no-store
juga. Jika tidak, Chrome akan menampilkan data yang di-cache / di-buffer ketika menggunakan tombol kembali.no-cache
header. Kutipan W3C di bawah ini menjelaskan bahwa bukan ini masalahnya; sebaliknya,no-cache
tajuk hanya berarti bahwa respons harus divalidasi ulang sebelum digunakan kembali untuk melayani permintaan berikutnya.Dari spesifikasi HTTP 1.1 :
sumber
no-cache
danmax-age=0
mengatakan item tersebut dianggap basi. Artinya, harus divalidasi ulang sebelum disajikan. Artinya, cache dapat menyimpan file dan kemudian melakukan permintaan bersyarat yang dapat dibalas oleh server304 NOT MODIFIED
. Ini jelas merupakan keuntungan besar karena isi respons tidak perlu dibuat dan dikirim. Jadi untuk memanfaatkan banyak (sebagian besar?) Cache ini akan menyimpanno-cache
respons.Jika Anda ingin mencegah semua caching (mis. Memaksa memuat ulang saat menggunakan tombol kembali) Anda perlu:
tanpa-cache untuk IE
tidak ada toko untuk Firefox
Ada informasi saya tentang ini di sini:
http://blog.httpwatch.com/2008/10/15/two-important-differences-between-firefox-and-ie-caching/
sumber
no-store
seharusnya tidak diperlukan dalam situasi normal, dan dapat merusak kecepatan dan kegunaan. Ini ditujukan untuk penggunaan di mana respons HTTP berisi informasi yang sangat sensitif sehingga tidak boleh ditulis ke cache disk sama sekali, terlepas dari efek negatif yang ditimbulkan bagi pengguna.Bagaimana itu bekerja:
Biasanya, meskipun agen pengguna seperti browser menentukan bahwa respons tidak boleh disimpan dalam cache, ia mungkin masih menyimpannya ke cache disk karena alasan internal agen pengguna. Versi ini dapat digunakan untuk fitur seperti "lihat sumber", "kembali", "info halaman", dan seterusnya, di mana pengguna tidak perlu meminta halaman lagi, tetapi browser tidak menganggapnya sebagai tampilan halaman baru dan akan masuk akal untuk menyajikan versi yang sama dengan yang sedang dilihat pengguna.
Menggunakan
no-store
akan mencegah respons tersebut disimpan, tetapi ini dapat memengaruhi kemampuan browser untuk memberikan "sumber tampilan", "kembali", "info halaman", dan seterusnya tanpa membuat permintaan baru yang terpisah untuk server, yang tidak diinginkan. Dengan kata lain, pengguna dapat mencoba melihat sumber dan jika browser tidak menyimpannya dalam memori, mereka akan diberitahu bahwa ini tidak mungkin, atau itu akan menyebabkan permintaan baru ke server. Oleh karena itu,no-store
sebaiknya hanya digunakan ketika pengalaman pengguna yang terhambat dari fitur-fitur ini tidak berfungsi dengan baik atau cepat dibandingkan dengan pentingnya memastikan konten tidak disimpan dalam cache.Ini salah Server cache perantara yang kompatibel dengan HTTP 1.1 akan mematuhi instruksi
no-cache
danmust-revalidate
, memastikan bahwa konten tidak di-cache. Menggunakan petunjuk ini akan memastikan bahwa respons tidak di-cache oleh cache perantara mana pun, dan bahwa semua permintaan berikutnya dikirim kembali ke server asal.Jika server cache perantara tidak mendukung HTTP 1.1, maka Anda perlu menggunakan
Pragma: no-cache
dan berharap yang terbaik. Perhatikan bahwa jika tidak mendukung HTTP 1.1 makano-store
itu tidak relevan.sumber
no-cache
mempertahankan kesegaran yang kaku tanpa mengorbankan semua manfaat caching, yang berarti cache disimpan dan digunakan lagi jika server merespons dengan 304 Not Modified.Jika sistem caching mengimplementasikan no-store dengan benar, Anda tidak memerlukan no-cache. Tapi tidak semua melakukannya. Selain itu, beberapa browser menerapkan tanpa cache seperti tidak ada penyimpanan. Jadi, meskipun tidak diwajibkan secara ketat, mungkin paling aman untuk menyertakan keduanya.
sumber
Perhatikan bahwa Internet Explorer dari versi 5 hingga 8 akan membuat kesalahan saat mencoba mengunduh file yang disajikan melalui https dan server pengirim
Cache-Control: no-cache
atauPragma: no-cache
header.Lihat http://support.microsoft.com/kb/812935/en-us
Penggunaan
Cache-Control: no-store
danPragma: private
tampaknya menjadi hal terdekat yang masih berfungsi.sumber
Cache-Control: no-store, no-cache, must-revalidate
dalam urutan yang tepat untuk membuatnya berfungsi. Namun, itu tidak berhasil dalam skenario kami, tetapi apa yang @bassim sarankan di atas berhasil. Terima kasih!Untuk chrome, no-cache digunakan untuk memuat ulang halaman pada kunjungan ulang, tetapi masih menyimpan cache jika Anda kembali ke sejarah (tombol kembali). Untuk memuat ulang halaman untuk sejarah-kembali juga, gunakan no-store. IE perlu melakukan validasi ulang agar berfungsi di semua kesempatan.
Jadi untuk memastikan untuk menghindari semua bug dan salah tafsir yang selalu saya gunakan
jika saya ingin memastikannya dimuat ulang.
sumber
Awalnya kami menggunakan no-cache beberapa tahun yang lalu dan mengalami beberapa masalah dengan konten basi dengan browser tertentu ... Sayangnya, sayangnya tidak ingat secara spesifik.
Kami sejak itu memutuskan HANYA penggunaan no-store. Tidak pernah melihat ke belakang atau mengalami satu masalah pun dengan konten usang oleh browser atau perantara mana pun sejak saat itu.
Ruang ini tentu saja didominasi oleh realitas implementasi vs apa yang kebetulan telah ditulis di berbagai RFC. Banyak proxy khususnya cenderung berpikir bahwa mereka melakukan pekerjaan yang lebih baik dalam "meningkatkan kinerja" dengan mengganti kebijakan yang seharusnya mereka ikuti dengan kebijakan mereka sendiri.
sumber
no-store
.Hanya untuk memperburuk keadaan, dalam beberapa situasi, no-cache tidak dapat digunakan, tetapi no-store dapat:
http://faindu.wordpress.com/2008/04/18/ie7-ssl-xml-flex-error-2032-stream-error/
sumber
OWASP membahas ini:
Sumber di sini .
sumber
no-cache
mengatakan Anda tidak dapat menggunakannya tanpa memvalidasi dengan server. Jika salinan cache Anda masih bagus, server akan membalas dengan 304 dan Anda kemudian menggunakan salinan cache Anda. Menghemat unduhan jaringan yang berpotensi besar untuk Anda.no-store
di sisi lain mengatakan Anda tidak diizinkan untuk menyimpan data sama sekali.