Browser unterstützen PUT
und DELETE
, aber es ist HTML, das nicht.
Zum Beispiel, ein Browser wird eine PUT
Anfrage über Javascript (AJAX) initiieren, aber nicht über HTML <form>
Einreichung.
Dies liegt daran, dass HTML 4.01 und die endgültige W3C HTML 5.0-Spezifikation beide sagen, dass die einzigen HTTP-Methoden, die ihre form
Elemente zulassen sollten, sind GET und POST.
Es gab viel Diskussion darüber während der Entwicklung von HTML 5, und irgendwann wurden sie HTML 5 hinzugefügt, nur um sie wieder zu entfernen. Der Grund, warum die zusätzlichen Methoden aus der HTML 5-Spezifikation entfernt wurden, liegt darin, dass HTML-4-Level-Browser sie niemals unterstützen konnten (sie waren zum Zeitpunkt ihrer Erstellung nicht Teil von HTML); und es gibt keine Möglichkeit, dies ohne JavaScript-Shim zu tun; Daher können Sie auch AJAX verwenden.
Webseiten versuchen, Formulare zu verwenden, um mit method="PUT"
oder method="DELETE"
würde auf die Standard-Methode zurückgreifen, GET
für alle gängigen Browser. Dies unterbricht die Versuche der Web-Anwendungen, geeignete Methoden in HTML-Formularen für die beabsichtigte Aktion zu verwenden, und führt schließlich zu einem schlechteren Ergebnis - GET
wird verwendet, um Dinge zu löschen! (Hallo Crawler. Oh, hoppla! Da geht meine Datenbank)
Ändern die Standardmethode für HTML <form>
Elemente POST
helfen würden (IMO sollte der Standard immer POST
gewesen, seitdem Moasic * debütierte Formen in 1993), aber Um den Standard zu ändern, würde es mindestens ein Jahrzehnt dauern, bis er durch die installierte Basis fließt. Also in zwei Worten: "weil Erbe". :-(
aktuelle Browser zu unterstützen, werden Autoren zu fälschen haben es mit einer Überschreibung Ich empfehle die weithin verwenden Autoren bekannt a, b_method
Argument von <input type=hidden name=_method value=DELETE>
in ihrer HTML einschließlich;. Die Form Methode POST
wechseln (Da die Anfrage unsicher ist), dann fügen Sie die Erkennung von _method
auf der Serverseite hinzu, die dann tun sollte, was notwendig ist, um die Anfrage zu mutieren und weiterzuleiten, als wäre es eine echte DELETE-Anfrage.
Beachten Sie auch, dass seit Web Browser sind die ultimativen HATEOAS Client, sie brauchen eine ne w Status, der für DELETE-Anfragen an sie übertragen wird. Existierende APIs geben oft 204 No Content
für solche Anfragen zurück. Sie sollten stattdessen eine Hypermedia-Antwort mit Links zurücksenden, damit der Benutzer seinen Browserstatus fortführen kann.
Siehe auch die Antworten auf diese ähnlichen/identischen Fragen:
* Mosiac, erstellt von Marc A ndreessen, führte auch den zusammengesetzten Fehler des
<img src=…>
Tags ein - es hätte
<image source=…>fallback</image>
sein sollen.
Welche Aktionen auf Browserebene würden die Semantik 'PUT' und' DELETE' erfordern? Sie können die Aktionen HTTP 'PUT' und' DELETE' bereits programmatisch generieren. Es ist nur, dass ich mir nicht vorstellen kann, wie man diese einem Benutzer in einem Browser aussetzt (was würde es tun? "PUT", wenn Sie eine Datei in Ihren Browser ziehen?) – Gian
Sie werden in HTML5- und Ajax-Anfragen unterstützt. – n1xx1
@ N1xx1 also in html5 konnte ich