rest - why - instagram hashtags on comments or caption
¿Por qué los navegadores no admiten las solicitudes PUT y DELETE y cuándo lo harán? (1)
Los navegadores admiten PUT
y DELETE
, pero es HTML que no lo hace.
Por ejemplo, un navegador iniciará una solicitud PUT
través de Javascript (AJAX), pero no a través del envío HTML <form>
.
Esto se debe a que HTML 4.01 y la especificación final de W3C HTML 5.0 dicen que los únicos métodos HTTP que sus elementos de form
deberían permitir son GET y POST.
Hubo mucha discusión sobre esto durante el desarrollo de HTML 5, y en un momento dado se agregaron a HTML 5, solo para volver a eliminarse. La razón por la que los métodos adicionales se eliminaron de la especificación HTML 5 es que los navegadores HTML de 4 niveles nunca podrían admitirlos (no formar parte de HTML en el momento en que se crearon); y no hay forma de permitir que lo hagan sin un shim de JavaScript; Por lo tanto, también puede utilizar AJAX.
Las páginas web que intentan utilizar formularios con method="PUT"
o method="DELETE"
volverían al método predeterminado, GET
para todos los navegadores actuales . Esto rompe los intentos de las aplicaciones web de usar métodos apropiados en los formularios HTML para la acción deseada, y termina dando un resultado peor: ¡ GET
se usa para eliminar cosas! (hola rastreador. Oh, vaya! ahí va mi base de datos)
Cambiar el método predeterminado para los elementos de HTML <form>
a POST
ayudaría (OMI, el valor predeterminado siempre debería haber sido POST
, desde que Moasic * debutó en 1993), pero cambiar el valor predeterminado tomaría al menos una década para filtrarse a través de los elementos instalados. base. Así que en dos palabras: ''porque legado''. :-(
Para dar soporte a los navegadores actuales, los autores tendrán que falsificarlo con una anulación. Recomiendo a los autores que usen el conocido argumento a , b _method
incluyendo <input type=hidden name=_method value=DELETE>
en su HTML; cambie el método de formulario a POST
(ya que la solicitud no es segura); a continuación, agregue el reconocimiento de _method
en el lado del servidor, que luego debe hacer lo que sea necesario para mutar la solicitud y reenviarla como si fuera una solicitud DELETE real.
Tenga en cuenta también que, dado que los navegadores web son el mejor cliente de HATEOAS , necesitan tener un nuevo estado para ser transferidos a ellos para las solicitudes DELETE. las API existentes a menudo devuelven 204 No Content
para tales solicitudes. En su lugar, debe enviar una respuesta de hipermedia con enlaces para que el usuario pueda avanzar en el estado de su navegador.
También vea las respuestas a estas preguntas similares / idénticas:
- ¿Por qué no hay métodos PUT y DELETE en formularios HTML?
- ¿Los métodos PUT, DELETE, HEAD, etc. están disponibles en la mayoría de los navegadores web?
- Usando el método PUT en forma HTML
- ¿Los navegadores admiten solicitudes PUT con datos de múltiples partes / formulario?
<img src=…>
- debería haber sido <image source=…>fallback</image>
. Recientemente he visto muchos marcos que han decidido "falsificar" las solicitudes PUT y DELETE. Al igual que Ruby on Rails. Parece que están esperando que los navegadores se pongan al día. ¿Están esperando en vano?
¿Está esto incluso programado para ser implementado en cualquier lugar?