2009-12-06 25 views
27

Karışık raporları duyduğumda, bir tarayıcıdan HTML/POST ya da Ajax gibi bir şeyden sonra POST/GET'in nasıl yapılacağını kesin (?) Yanıtlamanın ne olduğunu bilmek isterim. Hangi tarayıcılar neye izin verir (özellikle ajax tarafında).Bir tarayıcıdan bir HTTP PUT yapılıyor

o PUT gibi uygun fiiller kullanmak güzel RESTful tarzında bir arka uç bina, BAŞ, SEÇENEKLER vb ... raylar içinde, gizli bir form alanı, (IIRC?) Bu simüle etmek için kullanılır yöntemi denir ve arka uçta fiil için uygun kontrolöre gönderilir. Bu şimdi (2009'un sonlarında) gerekli mi? sözleşmeler nelerdir?

cevap

32

Çoğu tarayıcı, HTML formlarının bir sınırlaması olduğundan GET ve POST dışında başka yöntemleri desteklemiyor gibi görünüyor. Vb yöntemleri, PUT simüle SİL amacıyla

Are the PUT, DELETE, HEAD, etc methods available in most web browsers?

, sen yalancı yöntemi ile düzenli GET/POST forma gizli girdi ekleyip olabilir: İşte konuyla ilgili başka bir soru Uygulamanız, çevirmenlerinizin, bahsettiğiniz gibi gerçek bir PUT talebi gibi görmesini sağlayacak şekilde tercüme eder. Google sitebricks (java - üzgünüm herhangi bir raptiye özel referans yok, ama bu size en azından bir fikir verebilirsiniz) kullanılan bu yöntemi gördük this code. muhtemelen bu bizim ile sıkışıp kaldı HTML özelliğindeki bir şey değişiyor (ve onunla birlikte tarayıcılar)

Ancak, GET, POST, PUT ve DELETE, büyük tarayıcılar tarafından AJAX'ta desteklenmektedir, bu nedenle güvenmiyorsanız, gizli bir girdiye gerek yoktur. HTML formunda.

+0

Güzel - umarım gelecekte bu gibi şeyler için bakmak başkaları için google suyu yardımcı olacaktır birlikte bu bağlama! http://www.w3.org/TR/html5/forms: –

+0

Ben de PUT ve HTML5 göre desteklenir SİL inanıyoruz, eklemek gerekir.html # form-submission-0 (Ancak HEAD hakkında emin değilseniz). – mpobrien

+2

Bence AJAX, ilk başta önerdiğiniz "tünelleme" den çok daha iyi. Ayrıca, HTML5 hakkında iyi bir nokta. Ancak, bu noktada formlar için hangi tarayıcıların PUT ve DELETE desteklediğinden emin değilim. –

6

GET'ler ve POST'lar dışında bir şey yapmak için AJAX kullanmanız gerekir, PUT olarak bir form göndermenize izin vermek için jQuery Forms eklentisini öneririm.

5

HTTP'de 4 GET, POST, PUT, UPDATE var. Ancak çoğu tarayıcı sadece GET ve POST'u destekler. PUT ve UPDATE, istek üzerine ek parametreler gönderilerek simüle edilir. Raylarda, _method = "PUT" veya _method = "UPDATE".

3

Bu soruna yönelik tercih edilen çözüm, X-HTTP-Method-Override üstbilgisini kullanmaktır. Bu terimi ararsanız, onu nasıl kullanacağınıza dair çok sayıda örnek bulmalısınız.

1

Sanırım birçok güvenlik duvarı, bazı daha serin HTTP fiillerini engelliyor. Bu nedenle, sizin için işe yarayacaksa, kurumsal sitelerden tüketilen genel halk için bir şeyler yaratmaya çalışıyorsanız, muhtemelen temel bilgilerle uğraşmak isteyeceksiniz.

+0

İyi nokta - aynı zamanda "tek" başlıklar için de geçerlidir. –

1

ajax oluşturulan isteklerin yanı sıra, bu ek yöntemler almanın başka bir yolu bir webdav müşteriyle olduğunu. dosya sistemi istemcileri, tüm ana operationg sistemleri için var ve web yazma için destekleyebilecek bazı ek istemciler var. Örneğin, Amaya web tarayıcısı, web üzerindeki belgeleri düzenlemenizi ve PUT yöntemini kullanarak doğrudan sunucuya kaydetmenizi sağlar. Dreamweaver gibi diğer tarayıcılarda ve birçok web grafik editörleri, bu için eklentileri de WebDAV'yi destekleyen vardır.

WebDAV da kendi kullanımı için HTTP1.1 tanımlanan yöntemlerin yanı sıra diğer çeşitli yöntemler destekler.

İlgili konular