POST onay uyarısı gösterilmesini düğmesini geri önlemek

4 Cevap php

Ben bir web sayfasına parametrelerin uzun bir listesini sağlayan bir uygulama var, bu yüzden yerine GET POST kullanmak zorunda. Sorun sayfa görüntülenir ve kullanıcı geri düğmesini tıklattığında aldığında, Firefox bir uyarı gösterir ki:

Bu sayfayı görüntülemek için, Firefox önce yapıldı (örneğin bir arama veya sipariş onayı gibi) herhangi bir eylemi tekrarlamak bilgi göndermek gerekir.

Uygulama Geri gidiş oldukça yaygın bir operasyon olduğunu bu şekilde inşa edilmiş olduğundan, bu son kullanıcılara gerçekten sinir bozucudur.

Temelde, ben bu sayfayı yaptığı şekilde yapmak istiyorum:

http://www.pikanya.net/testcache/

Bir şey girmek, teslim ve Geri düğmesini tıklatın. Hiçbir uyarı, sadece geriye gider.

Ben bu Firefox 3 bir hata olabilir, ama onlar bunu "düzeltmek" sonra bile bir şekilde bu davranışı almak istiyorum öğrendim Googling.

Ben bazı HTTP başlıklarıyla yapılabilir olabilir sanırım, ama tam olarak hangi?

4 Cevap

Bunun tek bir yolu bir GET yönlendirir bir sayfaya POST yönlendirmek için - bkz Post/Redirect/Get on wikipedia.

Lütfen POST form verilerini 4K olduğunu söylüyorlar. Muhtemelen sunucu yerine sadece bir kez gösterme ve böyle bir veritabanına kaydetme gibi, uzağa atma daha bu verilerle bir şeyler yapar. Yapıyor tutun, ya da büyük bir arama formu ise bir alanı sınırı kullanıldığında birkaç gün sonra ya bir LRU bazda temizlendi alır bir veritabanında bunun geçici bir kopyasını oluşturun. Şimdi GET kullanarak erişilebilir verilerin bir sunumunu oluşturur. Geçici ise, bunun için bir kimlik oluşturmak ve URL olarak kullanan; bu veri kalıcı bir dizi ise muhtemelen bir kimliği veya URL için kullanılabilir bir şey vardır. Kötü durumda at, minik url kullanımları gibi bir algoritma çok daha küçük birine büyük bir URL daraltabilirsiniz. Verilerin temsil GET POST yönlendir.


Tarihsel bir not olarak, bu tekniğin oldu established practice in 1995.

Burada web programlama benim altın kuralı bakın:

http://stackoverflow.com/questions/638494/stop-data-inserting-into-a-database-twice/638506#638506

O diyor ki: "Hiç bir POST isteği için vücut ile yanıt verir. "Bu tarayıcı GET ile istediğinde böylece başlık güncellenmiş sayfasına yönlendirmek için: Her işi yapmak, ve sonra bir konumu ile yanıt

Tarayıcı hiç re-POST hakkında kullanıcı isterse, web app bozuldu. Kullanıcı Hiç bu soruyu görmek gerekir.

Bu uyarı / davranışı önlemek için bir yolu AJAX ile POST yapmak için, daha sonra ayrı bir sayfada (ya da değil) kullanıcıya gönderin.

Ben bir web sayfasına parametrelerin uzun bir listesini sağlayan bir uygulama var, bu yüzden yerine GET POST kullanmak zorunda. Sorun sayfa görüntülenir ve kullanıcı geri düğmesini tıklattığında aldığında, Firefox bir uyarı gösterir ki:

Sizin muhakeme yanlıştır. Istek yan etkileri olmadan ise, GET olmalıdır. Yan etkileri varsa, POST olmalıdır. Seçim geçmesine gerek parametre sayısına bağlı olmamalıdır.