To fascynujące pytanie. Pozostałe odpowiedzi tutaj są spekulatywne, aw niektórych przypadkach całkowicie błędne. Zamiast pisać tutaj moją opinię, faktycznie przeprowadziłem badania i znalazłem oryginalne źródła, które dyskutują, dlaczego usuwanie i wstawianie nie są częścią standardowego formularza HTML5.
Jak się okazuje, metody te zostały uwzględnione w kilku wczesnych wersjach roboczych HTML5 (!), Ale zostały później usunięte w kolejnych wersjach roboczych . Mozilla faktycznie zaimplementowała to również w wersji beta Firefoksa .
Jakie było uzasadnienie usunięcia tych metod z projektu? W3C omówił ten temat w raporcie o błędzie 10671 . Mike Amundsen opowiedział się za tym wsparciem:
Wykonywanie operacji PUT i DELETE w celu zmodyfikowania zasobów na serwerze źródłowym jest proste w przypadku nowoczesnych przeglądarek internetowych wykorzystujących obiekt XmlHttpRequest. W przypadku nieskryptowanych interakcji przeglądarki nie jest to takie proste. [...]
Ten wzorzec jest wymagany tak często, że kilka często używanych platform / bibliotek internetowych stworzyło „wbudowane” obejście. [...]
Inne uwagi:
- Używanie POST jako tunelu zamiast PUT / DELETE może prowadzić do buforowania niepasujących dopasowań (np. Odpowiedzi POST są buforowalne , odpowiedzi PUT nie są (6), odpowiedzi DELETE nie są (7))
- Użycie nie idempotentnej metody (POST) do wykonania idempotentnej operacji (PUT / DELETE) komplikuje odzyskiwanie z powodu awarii sieci (np. „Czy można bezpiecznie powtórzyć tę akcję?”).
- [...]
Warto przeczytać cały jego post.
Tom Wardrop przedstawia również interesujący punkt:
HTML jest nierozerwalnie związany z HTTP. HTML to ludzki interfejs HTTP. Jest zatem automatycznie wątpliwe, dlaczego HTML nie obsługuje wszystkich odpowiednich metod w specyfikacji HTTP. Dlaczego maszyny mogą PUT i DELETE zasoby, a ludzie nie? [...]
Jest sprzeczne, że chociaż HTML dokłada wszelkich starań, aby zapewnić znaczniki semantyczne, do tej pory nie podejmował takich wysiłków, aby zapewnić semantyczne żądania HTTP.
Błąd został ostatecznie zamknięty jako „Nie naprawi” Ian Hickson, z następującym uzasadnieniem:
PUT jako metoda formularza nie ma sensu, nie chciałbyś PUT ładunku formularza. DELETE ma sens tylko wtedy, gdy nie ma ładunku, więc nie ma też większego sensu w przypadku formularzy.
To jednak nie koniec historii! Kwestia ta została zamknięta w W3C bug tracker i eskalacja do śledzenia błędów Grupy Roboczej HTML:
https://www.w3.org/html/wg/tracker/issues/195
W tym momencie wydaje się, że głównym powodem, dla którego nie ma wsparcia dla tych metod, jest po prostu to, że nikt nie poświęcił czasu na napisanie dla niego kompleksowej specyfikacji.