Ich habe gerade die Erstellung einer RESTful-API für eine meiner neuesten Apps abgeschlossen. Ich habe auch eine einfache Admin-Schnittstellen-Gerüstklasse erstellt, die Ressourcen aufzählt und einfache Formulare und Tabellen zum Bearbeiten, Erstellen, Löschen usw. erstellt.
Zum Aktualisieren und Löschen von Ressourcen gibt die Klasse ein Formular mit den Methoden PUT und DELETE aus, ziemlich einfach:
<form action="/posts/xxxxxxx" method="DELETE">
<input type="submit" value="Delete" />
</form>
und
<form action="/posts/xxxxxxx" method="PUT">
<input type="text" name="username" value="nikcub" />
<input type="text" name="fullname" value="Nik Cubrilovic" />
<input type="text" name="email" value="[email protected]" />
<input type="submit" value="Update" />
</form>
Sehr einfach. Wenn Javascript erkannt wird, fängt es das Formular ab und verwendet eine XMLHTTPRequest, um es zurückzusenden. Das Javascript unterstützt die anderen HTTP-Methoden, aber warum unterstützen moderne Browser die PUT- und DELETE-Methoden nicht? Am Ende sendet es ein GET.
Ich würde es vorziehen, dass, wenn die App elegant auf Standard-HTML zurückgreift, dieselben Methoden verwendet werden, anstatt versteckte Felder und die Logik dafür in der Klasse verwenden zu müssen, oder schlimmer noch, die Methode in den URI einzufügen und GET funktionieren zu lassen .
Ich kann mir keine Gründe vorstellen, warum Browser die anderen HTTP-Methoden nicht unterstützen würden, da Entwickler sowieso nur daran arbeiten, indem sie GET hacken oder POST verwenden.
Ich suchte nach einer Antwort und konnte sie als Teil von finden die XHTML 2.0 Spezifikation. Es gibt keine Erwähnung davon in der HTML5-Spezifikation.
Gibt es einen Grund dafür, dass es in den „HTML5-kompatiblen“ Browsern nicht unterstützt wird? Wo kann ich eine Anfrage stellen, um diese Sicherung zu öffnen und in Browsern zu implementieren?
Bist du dir da sicher @JoostBaaij Ich habe es nicht selbst ausprobiert, aber MDN erwähnt es nicht developer.mozilla.org/en-US/docs/Web/HTML/Element/form
– Georg Mauer
22. Oktober 2013 um 16:00 Uhr
@JoostBaaij Gerade noch einmal überprüft. Senden Sie dieses Formular ab jsbin.com/IWoWiRi/1 dann überprüfen Sie die Anfrage hier requestb.in/ol62w4ol?inspect in Chrome30, FF24, IE10
method="PUT"
alles zeigt sich alsGET
also tut mir leid, aber du liegst falsch.– Georg Mauer
22. Oktober 2013 um 16:08 Uhr
Wenn dies nicht der Fall ist, können Sie immer noch eine Telnet-Verbindung auf Port 80 öffnen und die Befehle mit einem clientseitigen Skript starten.
– Benutzer2284570
22. Oktober 2013 um 20:04 Uhr
@ user2284570 was meinst du? Die Frage betrifft die Tatsache, dass
<form>
Elemente werden nicht unterstütztmethod=PUT
was hat telnet damit zu tun?– Georg Mauer
22. Oktober 2013 um 20:42 Uhr
Duplikat von programers.stackexchange.com/q/114156
– BalusC
25. Oktober 2013 um 17:50 Uhr