2013-05-29 13 views
29

Son zamanlarda PUT ve DELETE isteklerini "sahte" yapmaya karar veren birçok çerçeveyi görüyorum. Ruby on Rails gibi. Tarayıcıların yetişmesini bekliyor gibi görünüyorlar. Boşuna bekliyorlar mı?Neden tarayıcılar PUT ve DELETE isteklerini desteklemiyorlar ve ne zaman yapacaklar?

Bu, herhangi bir yerde uygulanacak şekilde düzenlenmiş mi?

+1

Hangi tarayıcı düzeyindeki eylemler 'PUT' ve' DELETE' semantiklerini gerektirir? Programlı bir şekilde zaten HTTP 'PUT' ve' DELETE' eylemleri üretebilirsiniz. Sadece bir kullanıcının bir tarayıcıda bir kullanıcıya nasıl göstereceğini tahmin edemiyorum (bir dosyayı tarayıcınıza sürüklediğinizde ne yapar? PUT) – Gian

+0

HTML5 ve Ajax isteklerinde desteklenirler. – n1xx1

+0

@ N1xx1 böylece html5 içinde

yapabilirim? Tatlı. Buna bakacağım. – pixelearth

cevap

53

Tarayıcılar destek PUT ve DELETE, ama öyle değil HTML bu. Örneğin, bir tarayıcı, Javascript (AJAX) yoluyla bir PUT isteği başlatır, ancak HTML <form> gönderim yoluyla başlatmaz.

Bunun nedeni, HTML 4.01 ve son W3C HTML 5.0 özelliklerinin, her ikisi de form öğelerinin izin vermesi gereken tek HTTP yöntemlerinin GET ve POST olduğunu belirtmesidir.

HTML 5'in geliştirilmesi sırasında bu konu hakkında çok fazla tartışma yapıldı ve bir noktada, HTML 5'e eklendikten sonra yalnızca yeniden kaldırılacaklar. HTML 5 özellikli ek yöntemlerin kaldırılmasının nedeni, HTML 4 düzeyli tarayıcıların hiçbir zaman destekleyememeleridir (HTML'nin yapıldıkları zamanın bir parçası olmamak); ve bir JavaScript dizisi olmadan bunları yapmalarına izin vermenin hiçbir yolu yoktur; Böylece, AJAX'ı da kullanabilirsiniz. method="PUT" veya method="DELETE" formları kullanmaya çalışıyorum

Web sayfaları varsayılan yöntemi tüm güncel tarayıcılar için GET düşeceği tahmin edilmektedir. Bu, web uygulamalarının amaçlanan eylem için HTML formlarında uygun yöntemleri kullanma girişimlerini bozar ve daha kötü bir sonuç vererek sona erer - GET şeyleri silmek için kullanılır!

(* Hiç Moasic beri, IMO varsayılan hep POST olmalıydı giriş yaptı formları 1993 yılında) POST için <form> elemanları yardımcı olacağını HTML için varsayılan yöntemi değiştirme, ancak (merhaba paletli. Oh hoppala! Benim veritabanını oraya gider) varsayılanı değiştirmek için kurulu taban üzerinden en az on yıl kadar perçolabilir. Yani iki kelimeyle: leg çünkü mirası '. . :-(

güncel tarayıcıları desteklemek için, yazarlar kendi HTML <input type=hidden name=_method value=DELETE> dahil ederek, ben yazarlar yaygın a bilinen kullanmanızı tavsiye geçersiz kılma ile taklit etmenin b_method argüman olacaktır; (POST form yöntemini geçiş istek güvenli olmadığı için, sunucu tarafında _method tanıma ekleyin, daha sonra isteğinizi değiştirmek ve gerçek bir DELETE isteği gibi iletmek için gerekli olan her şeyi yapmalıdır.

Not tarayıcılar en son HATEOAS istemcisidir, bir ne sahip olmalıdır W durum DELETE istekleri için onlara aktarılacak. Mevcut API'ler, bu tür istekler için sıklıkla 204 No Content döndürür. Bunun yerine, kullanıcıların tarayıcı durumlarını ilerletebilmesi için bağlantılarla bir hiper ortam yanıtı göndermelisiniz.

Ayrıca bu benzer/aynı sorulara yanıtları görmek:


* Marc A tarafından oluşturulan Mosiac, ndreessen, aynı zamanda <img src=…> etiketinin bileşik hatasını tanıttı - <image source=…>fallback</image> olmalıdır.

İlgili konular