Cegah pesan "dokumen kedaluwarsa" dan cukup tampilkan halaman kedaluwarsa?


13

Ketika saya mengirimkan formulir dan kemudian menekan kembali, saya terkadang mendapatkan pesan "Dokumen kedaluwarsa" alih-alih halaman terakhir.

masukkan deskripsi gambar di sini

Sebagai gantinya, saya mendapatkan kotak pesan yang mengganggu berikut (yang sekarang muncul setelah klik "Coba Lagi"):

masukkan deskripsi gambar di sini

Sekarang, saya tidak tahu apa artinya ini dan mengapa Firefox menunjukkan pesan ini. Namun, saya hanya ingin melihat halaman yang terakhir dilihat - seperti yang ditampilkan sedetik yang lalu. Tidak ada sembulan, dan tidak ada reload untuk mencerminkan keadaan baru server. (Mungkin sedikit info bar akan menyenangkan, tetapi itu tidak perlu bagi saya).

Use case: Bayangkan saya login ke situs yang saya gunakan secara teratur, dan setelah menekan Enter saya melihat di sudut mata saya sebuah headline berita di halaman login. Saya ingin mengklik kembali dan melihat halaman persis yang saya lihat sedetik yang lalu untuk mengklik pada judul. Jika saya melihat halaman depan login, atau hanya memuatnya kembali, saya mungkin mendapatkan tajuk berita (acak) yang berbeda.

Jadi, bagaimana saya menyingkirkan pesan "Dokumen kedaluwarsa" dan "Konfirmasi" sepenuhnya dan dapatkan Firefox untuk hanya menampilkan lokasi terakhir yang di-cache setelah mengirimkan formulir POST? about:configpengaturan, ekstensi, trik proksi semuanya baik-baik saja.


3
Anda bertanya bagaimana cara menampilkan entri cache dari dokumen yang tidak di-cache. Itu tidak mungkin.
pa

3
Nah, kalau begitu dengan ekstensi saya bertanya bagaimana membuat Firefox juga cache dokumen :-).
jdm

1
Saya sering menghadapi ini ketika semua yang saya coba lakukan adalah membuat cadangan melalui riwayat penelusuran untuk sampai ke suatu tempat sebelum masalah terjadi. Memiliki sesuatu untuk melewati penghalang jalan ini akan sangat berguna. Saya tahu saya bisa menggunakan tombol History pada toolbar utama, tetapi seringkali sulit untuk menentukan entri mana yang harus dipilih.
Joe

@ jdm Anda bertanya 1) cara menampilkan halaman yang saya navigasikan dengan cara yang sama seperti yang saya lihat sebelumnya; 2) dan cara menyingkirkan kotak konfirmasi browser untuk mengirim ulang data. Apakah saya mengerti itu dengan jelas?
laika

@sjrco: 1) ya, tapi tidak 2). Saya ingin dapat mengklik kembali dan melihat apa yang ada di sana (keadaan halaman yang sama) sebelum saya menavigasi. (Itu berfungsi pada beberapa halaman meskipun telah dimodifikasi oleh js, atau pengguna mengisi formulir, sehingga browser harus menyimpan dokumen yang dimodifikasi dalam beberapa keadaan). Saya tidak ingin browser mengirim ulang data secara diam-diam. Saya ingin menekan dialog modal ketika tidak mengirim ulang data.
jdm

Jawaban:


2

Mesin Firefox tidak (atau tidak seharusnya) men-cache kondisi terakhir dokumen, hanya dokumen HTML itu sendiri jika server mengizinkan caching. Opera memiliki (atau mungkin masih memiliki) fitur ini, tetapi telah menyebabkan banyak masalah keamanan bagi operator situs web.

RFC 2616 menyatakan:

13.4 Respon Cacheability

Kecuali secara khusus dibatasi oleh arahan kontrol-cache (bagian 14.9), sistem caching MUNGKIN selalu menyimpan respons yang berhasil (lihat bagian 13.8) sebagai entri cache, MUNGKIN mengembalikannya tanpa validasi jika masih segar, dan MUNGKIN mengembalikannya setelah validasi berhasil .

Banyak situs saat ini menggunakan header kontrol-cache pada semua respons yang dihasilkan oleh server untuk menghindari masalah caching. Sekalipun Anda meminta Firefox memberi Anda dokumen di negara bagian sebelumnya, pada sebagian besar situs, tetap tidak akan berhasil. Solusi teraman dan paling bukti di masa depan adalah meminta pemilik situs web untuk membuat kode situs web mereka dengan benar.


1
Tapi itu cache keadaan terakhir, setidaknya dalam beberapa keadaan. Coba ini: gist.github.com/jdmansour/5578079 . Setidaknya DOM dipertahankan.
jdm

1
Sejarah dan cache bukan hal yang sama. Lihat bagian 13.13 dari RFC yang sama . Tombol kembali meminta tampilan ulang entri sejarah, bukan entri cache. Opera benar; Firefox salah. Siapa pun yang mengklaim ini adalah fitur "keamanan" adalah bodoh. Anda selalu dapat menggunakan "buka di tab baru", lalu tutup tab baru untuk melihat halaman sebelumnya tanpa server mengetahui bahwa Anda telah melakukannya. Tombol kembali yang berfungsi dengan baik harus memiliki efek yang tepat.

2

Untuk menghilangkan semua pesan ini, tambahkan baris PHP berikut ke awal semua skrip Anda:

header ("Kedaluwarsa: Sabtu, 01 Jan 2000 00:00:00 GMT"); header ("Last-Modified:" .gmdate ("D, d MYH: i: s"). "GMT"); header ("Kontrol Tembolok: post-check = 0, pra-cek = 0", false); session_cache_limiter ("must-revalidate");


2
Saya tidak yakin @jdm memiliki kendali atas halaman yang sedang mereka bicarakan.
Valmiky Arquissandas

2

Jawabannya ada di https://support.mozilla.org/fr/questions/1010942 : cukup periksa Tools-> Options-> Override Automatic Cache Management.


Ini dia! Pengaturan berada di bawah Tools / Options / Advanced / Network / Override manajemen cache otomatis. Tidak yakin apakah itu berfungsi untuk semua kasus "Dokumen Kedaluwarsa", tetapi berfungsi untuk yang saya miliki, di mana saya tidak dapat melihat Sumber respons POST.
RomanSt

Ini seharusnya tidak berpengaruh pada masalah ini, karena hanya memungkinkan Anda untuk mengatur ukuran cache: support.mozilla.org/en-US/questions/1037647 Saya bertanya-tanya apa ukuran cache yang ditentukan secara otomatis jika ini membantu .. .
Nickolay
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.