Questa è una domanda affascinante. Le altre risposte qui sono tutte speculative e in alcuni casi completamente errate. Invece di scrivere la mia opinione qui, in realtà ho fatto alcune ricerche e ho trovato fonti originali che discutono del perché eliminare e mettere non fanno parte del modulo standard HTML5.
A quanto pare, questi metodi sono stati inclusi in diverse prime bozze HTML5 (!), Ma sono stati successivamente rimossi nelle bozze successive . Mozilla lo aveva effettivamente implementato anche in una beta di Firefox .
Qual è stata la logica per la rimozione di questi metodi dalla bozza? Il W3C ha discusso questo argomento nella segnalazione bug 10671 . Mike Amundsen ha sostenuto questo sostegno:
L'esecuzione di PUT e DELETE per modificare le risorse sul server di origine è semplice per i moderni browser Web che utilizzano l'oggetto XmlHttpRequest. Per le interazioni del browser senza script questo non è così semplice. [...]
Questo modello è richiesto così spesso che numerosi framework / librerie Web di uso comune hanno creato una soluzione "integrata". [...]
Altre considerazioni:
- L'uso di POST come tunnel anziché utilizzare PUT / DELETE può portare a errori di corrispondenza nella cache (ad es. Le risposte POST sono memorizzabili , le risposte PUT no (6), le risposte DELETE no (7))
- L'uso di un metodo non idempotente (POST) per eseguire un'operazione idempotente (PUT / DELETE) complica il recupero a causa di guasti della rete (ad es. "È sicuro ripetere questa azione?").
- [...]
Vale la pena di leggere l'intero suo post.
Tom Wardrop fa anche un punto interessante:
L'HTML è indissolubilmente legato all'HTTP. HTML è l'interfaccia umana di HTTP. È quindi automaticamente discutibile il motivo per cui HTML non supporta tutti i metodi pertinenti nella specifica HTTP. Perché le macchine possono METTERE e ELIMINARE le risorse, ma gli umani non possono? [...]
È contraddittorio che, sebbene l'HTML faccia di tutto per garantire il markup semantico, finora non ha fatto alcuno sforzo per garantire richieste HTTP semantiche.
Il bug alla fine fu chiuso come Won't Fix da Ian Hickson, con la seguente logica:
PUT come metodo di form non ha senso, non si vorrebbe mettere un payload di form. DELETE ha senso solo se non c'è payload, quindi non ha molto senso neanche con i moduli.
Tuttavia, questa non è la fine della storia! Il problema è stato chiuso nel bug tracker W3C ed è stato convertito nel tracker dei problemi del gruppo di lavoro HTML:
https://www.w3.org/html/wg/tracker/issues/195
A questo punto, sembra che il motivo principale per cui non esiste alcun supporto per questi metodi sia semplicemente che nessuno si è preso il tempo di scrivere una specifica completa per questo.