Acabo de terminar de construir una API RESTful para una de mis últimas aplicaciones. También construí una clase simple de andamios de interfaz de administrador que enumerará recursos y creará formularios y tablas simples para editar, crear, eliminar, etc.¿Por qué los navegadores modernos no son compatibles con los métodos de forma PUT y DELETE?
Para actualizar y eliminar recursos, la clase genera un formulario con métodos de PUT y DELETE, bastante sencillo:
<form action="/posts/xxxxxxx" method="DELETE">
<input type="submit" value="Delete" />
</form>
y
<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>
muy simple. Si se detecta Javascript, interceptará el formulario y utilizará una solicitud XMLHTTP para enviar de nuevo. El Javascript admite los otros métodos HTTP, pero ¿por qué los navegadores modernos no son compatibles con los métodos PUT y DELETE? Termina enviando un GET.
Preferiría que cuando la aplicación recurra al HTML estándar con los mismos métodos, en lugar de tener que usar campos ocultos y la lógica para eso en la clase, o peor, poner el método en el URI y lo que permite que GET funcione.
No puedo pensar en ninguna razón por la que los navegadores no admitan los otros métodos HTTP, ya que los desarrolladores simplemente están trabajando en ello de todos modos pirateando GET o utilizando POST.
He buscado una respuesta, y he podido encontrarla especificada como parte de the XHTML 2.0 spec. No hay mención de ello in the HTML5 spec.
¿Alguna razón para que no sea compatible con los navegadores "compatibles con HTML5"? ¿Dónde puedo publicar una solicitud para abrir esta copia de seguridad e implementarla en los navegadores?
¿Estás seguro de que @JoostBaaij que no lo intenté yo mismo, pero MDN no hace ninguna mención de ella https://developer.mozilla.org/en-US/docs/Web/HTML/Element/formulario –
@JoostBaaij Solo doblemente verificado. Envíe este formulario http://jsbin.com/IWoWiRi/1/ y luego inspeccione la solicitud aquí http://requestb.in/ol62w4ol?inspect en Chrome30, FF24, IE10 'method =" PUT "' todo aparece como 'GET 'Entonces lo siento pero estás equivocado. –
Si no lo hace, aún puede abrir una conexión telnet en el puerto 80 e iniciar los comandos con un script del lado del cliente. – user2284570