Это увлекательный вопрос. Все остальные ответы здесь носят умозрительный характер, а в некоторых случаях совершенно неверны. Вместо того, чтобы писать свое мнение здесь, я действительно провел некоторое исследование и нашел оригинальные источники, которые обсуждают, почему удаление и вставка не являются частью стандарта формы HTML5.
Как оказалось, эти методы были включены в несколько ранних черновиков HTML5 (!), Но позже были удалены в последующих черновиках . Mozilla также реализовала это в бета-версии Firefox .
Что послужило основанием для удаления этих методов из проекта? W3C обсуждал эту тему в сообщении об ошибке 10671 . Майк Амундсен высказался в пользу этой поддержки:
Выполнение PUT и DELETE для изменения ресурсов на исходном сервере является простым для современных веб-браузеров, использующих объект XmlHttpRequest. Для незашифрованных браузерных взаимодействий это не так просто. [...]
Этот шаблон требуется так часто, что несколько часто используемых веб-фреймворков / библиотек создают «встроенный» обходной путь. [...]
Другие соображения:
- Использование POST в качестве туннеля вместо использования PUT / DELETE может привести к несоответствию кэширования (например, ответы POST кэшируются , ответы PUT - нет (6), ответы DELETE - нет (7))
- Использование неидемпотентного метода (POST) для выполнения идемпотентной операции (PUT / DELETE) усложняет восстановление из-за сбоев сети (например, «Безопасно ли повторять это действие?»).
- [...]
Стоит прочитать весь его пост.
Том Уордроп также делает интересное замечание:
HTML неразрывно связан с HTTP. HTML - это человеческий интерфейс HTTP. Поэтому автоматически возникает вопрос, почему HTML не поддерживает все соответствующие методы в спецификации HTTP. Почему машины могут ПОСТАВЛЯТЬ и УДАЛЯТЬ ресурсы, а люди - нет? [...]
Противоречиво, что хотя HTML идет на все, чтобы обеспечить семантическую разметку, на сегодняшний день он не предпринимал таких усилий для обеспечения семантических HTTP-запросов.
Иан Хиксон в конце концов исправил ошибку « Не исправлю» со следующим объяснением:
PUT как метод формы не имеет смысла, вы не хотите помещать полезную нагрузку формы. DELETE имеет смысл только в том случае, если нет полезной нагрузки, поэтому он не имеет особого смысла и с формами.
Однако это еще не конец истории! Проблема была закрыта в трекере ошибок W3C и перешла в трекер проблем рабочей группы HTML:
https://www.w3.org/html/wg/tracker/issues/195
На данный момент кажется, что главная причина, по которой эти методы не поддерживаются, заключается в том, что никто не нашел время для того, чтобы написать для него исчерпывающую спецификацию.