Przeglądarki obsługują PUT
i DELETE
, ale to HTML że nie.
Na przykład przeglądarka zainicjuje żądanie PUT
za pośrednictwem Javascript (AJAX), ale nie za pośrednictwem przesyłania HTML <form>
.
Dzieje się tak, ponieważ HTML 4.01 i końcowa specyfikacja HTML HTML W3C mówią, że jedynymi metodami HTTP, na które powinny zezwalać na ich elementy form
, są GET i POST.
Było dużo dyskusji na ten temat podczas opracowywania HTML 5, i w pewnym momencie zostały one dodane do HTML 5, a następnie ponownie usunięte. Powodem, dla którego dodatkowe metody zostały usunięte ze specyfikacji HTML 5, jest to, że przeglądarki HTML 4-poziomowe nigdy nie były w stanie ich obsługiwać (nie będąc częścią HTML w momencie ich tworzenia); i nie ma sposobu, aby pozwolić im to zrobić bez podkładki JavaScript; w związku z tym możesz równie dobrze używać AJAX.
stron internetowych starają się korzystać z formularzy z method="PUT"
lub method="DELETE"
byłoby spaść z powrotem do metody domyślnej GET
dla wszystkich obecnych przeglądarek. Powoduje to przerwanie prób stosowania przez aplikacje internetowe odpowiednich metod w formularzach HTML do zamierzonego działania, a kończy się dając gorszy wynik - GET
używany do usuwania rzeczy! (Cześć gąsienicowy. Och, ups! Tam jest moje bazy danych)
Zmiana metody domyślnej dla HTML <form>
elementy do POST
pomógłby (IMO domyślna powinna zawsze POST
, odkąd Moasic * zadebiutowały formy w 1993 roku), ale zmiana ustawienia domyślnego zajęłaby co najmniej dekadę, aby przeniknąć przez zainstalowaną bazę. Tak więc w dwóch słowach: "ponieważ dziedzictwo". :-(
Wspieranie aktualnych przeglądarek, autorzy będą musieli udawać z ręcznym Polecam Autorzy wykorzystują powszechnie znane a, b_method
argumentu za tym <input type=hidden name=_method value=DELETE>
w ich HTML;. Przełączyć metodę formularz do POST
(ponieważ żądanie jest niebezpieczne), a następnie dodaj rozpoznanie _method
po stronie serwera, co powinno następnie zrobić wszystko, co konieczne, aby zmutować żądanie i przekazać dalej tak, jakby było prawdziwym żądaniem DELETE
Należy również pamiętać, że ponieważ Internet przeglądarki są ostatecznym klientem, muszą mieć ne w stanie do przesłania do nich w celu usunięcia żądań. istniejące API często zwracają 204 No Content
dla takich żądań. Zamiast tego wyślij odpowiedź hipermedialną z linkami, aby użytkownik mógł przejść do stanu przeglądarki.
Zobacz także odpowiedzi na te pytania podobne/identyczne:
* Mosiac, utworzony przez Marc A ndreessen, także wprowadził błąd złożenia znacznika
<img src=…>
- powinien on być
<image source=…>fallback</image>
.
Które operacje na poziomie przeglądarki wymagałyby semantyki "PUT" i "DELETE"? Możesz już generować działania HTTP 'PUT' i' DELETE' w sposób programistyczny. Po prostu nie mogę sobie wyobrazić, w jaki sposób można narazić je na użytkownika w przeglądarce (co by zrobił? PUT ?, gdy przeciągasz plik do przeglądarki?) – Gian
Są one obsługiwane w żądaniach HTML5 i Ajax. – n1xx1
@ N1xx1 tak w html5 mogłem zrobić