Esta es una pregunta fascinante. Las otras respuestas aquí son todas especulativas y, en algunos casos, totalmente incorrectas. En lugar de escribir mi opinión aquí, en realidad investigué un poco y encontré fuentes originales que analizan por qué eliminar y colocar no son parte del estándar de formulario HTML5.
Resulta que estos métodos se incluyeron en varios borradores HTML5 iniciales (!), Pero luego se eliminaron en los borradores posteriores . Mozilla también había implementado esto en una versión beta de Firefox .
¿Cuál fue la razón para eliminar estos métodos del borrador? El W3C discutió este tema en el informe de error 10671 . Mike Amundsen argumentó a favor de este apoyo:
Ejecutar PUT y DELETE para modificar recursos en el servidor de origen es sencillo para los navegadores web modernos que usan el objeto XmlHttpRequest. Para las interacciones de navegador sin script, esto no es tan simple. [...]
Este patrón se requiere con tanta frecuencia que varios frameworks / bibliotecas web de uso común han creado una solución "incorporada". [...]
Otras Consideraciones:
- Usar POST como un túnel en lugar de usar PUT / DELETE puede conducir a errores de coincidencia de almacenamiento en caché (por ejemplo, las respuestas POST son almacenables en caché , las respuestas PUT no son (6), las respuestas DELETE no son (7))
- El uso de un método no idempotente (POST) para realizar una operación idempotente (PUT / DELETE) complica la recuperación debido a fallas de la red (por ejemplo, "¿Es seguro repetir esta acción?").
- [...]
Vale la pena leer su publicación completa.
Tom Wardrop también hace un punto interesante:
HTML está inextricablemente unido a HTTP. HTML es la interfaz humana de HTTP. Por lo tanto, es automáticamente cuestionable por qué HTML no admite todos los métodos relevantes en la especificación HTTP. ¿Por qué las máquinas PUEDEN PONER y BORRAR recursos, pero los humanos no pueden? [...]
Es contradictorio que, si bien HTML hace todo lo posible para garantizar el marcado semántico, hasta la fecha no ha hecho ningún esfuerzo para garantizar las solicitudes HTTP semánticas.
El error finalmente se cerró como No lo solucionará Ian Hickson, con la siguiente justificación:
PUT como método de formulario no tiene sentido, no querrás PONER una carga útil de formulario. DELETE solo tiene sentido si no hay carga útil, por lo que tampoco tiene mucho sentido con los formularios.
Sin embargo, ¡ese no es el final de la historia! El problema se cerró en el rastreador de errores del W3C y pasó al rastreador de problemas del Grupo de trabajo HTML:
https://www.w3.org/html/wg/tracker/issues/195
En este punto, parece que la razón principal por la que no hay soporte para estos métodos es simplemente que nadie se ha tomado el tiempo para escribir una especificación completa para ello.