2009-05-19 12 views
6

Yinelenen Tam: How to handle multiple submissions server-sideönlenmesi çift form gönderimleri

el altında genel görev: Çok kullanıcılı web tabanlı uygulamada çifte form gönderimini engellemeyi. Finansal işlemleri düşünün.

ben tandem kullanılabilecek iki yöntem vardır:

    • düğmeye JavaScript devre dışı bırakılması Dezavantaj: JavaScript
  1. engelli Arka uç doğrulaması ise eğer çalışmaz - ne kadar uzun bir süre önce bu türden son isteğin bu kullanıcıdan geldiğini ve çok uzun bir süre önce sorun oluşmadığını görün
    • Dezavantajı: İki gönderimler yeterli birbirine yakınsa, her ı konu onların en iyi uygulamaları katkıda bulunmak uzmanlar yanı sıra ezoterik hileler arıyorum diğer

farkında olmak mümkün olmayabilir . Herhangi bir dil ve çerçeve olabilir, ancak Django belirli bir ilgidir. Web üzerinde eldeki görev hakkında çok şey yazıldı, ancak burada gösterilen en iyi uygulamalara sahip olmak güzel olurdu.

+0

Bu işlem kapatıldı, ancak benzer sorular nerede? çift ​​gönderme önleme etiketi aynı sorun senaryosunu ortaya çıkarmaz. – vsingh

cevap

8

Genel çözüm, her form oluşturduğunuzda sunucuda bir simge oluşturmaktır. Jetonu sunucuda saklayın, gizli bir alan olarak forma ekleyin ve o simgeyle bir form gönderiminden sonra onu silin.

Geçerli bir belirteci olmayan bir form gönderiminde bulunursanız, bu formun zaten gönderilmiş ve onu görmezden geldiği anlamına gelir.

Bu, projenize XSRF koruması ekleme avantajına sahiptir.