peticiones peticion metodos metodo method form html forms

peticion - Usando el método PUT en formato HTML



metodos http (5)

¿Puedo usar el método "Put" en formato html para enviar datos del Formulario HTML al servidor?

Sí, puede, pero tenga en cuenta que no dará como resultado un PUT sino una solicitud GET. Si usa un valor no válido para el atributo de method de la etiqueta <form> , el navegador usará el valor predeterminado get .

Los formularios HTML (hasta HTML versión 4 (, 5 Draft) y XHTML 1) solo admiten GET y POST como métodos de solicitud HTTP. Una solución para esto es hacer un túnel de otros métodos a través de POST utilizando un campo de formulario oculto que el servidor lee y la solicitud se envía en consecuencia. XHTML 2.0 una vez planeado para admitir GET, POST, PUT y DELETE para formularios, pero va a XHTML5 de HTML5 , que no tiene previsto admitir PUT. [actualización para]

Alternativamente, puede ofrecer un formulario, pero en lugar de enviarlo, cree y active un XMLHttpRequest utilizando el método PUT con JavaScript.

¿Puedo usar un método PUT en un formulario HTML para enviar datos del formulario a un servidor?


Desafortunadamente, los navegadores modernos no brindan soporte nativo para las solicitudes HTTP PUT. Para evitar esta limitación, asegúrese de que el atributo de método de su formulario HTML sea "publicar", luego agregue un parámetro de anulación de método a su formulario HTML de esta manera:

<input type="hidden" name="_METHOD" value="PUT"/>

Para probar sus solicitudes, puede usar "Postman", una extensión de google chrome


Los formularios XHTML 1.x solo admiten GET y POST. GET y POST son los únicos valores permitidos para el atributo "método".


_method solución de campo oculto

Este método es utilizado por Rails y podría adaptarse a cualquier marco / proyecto:

  • agregue un parámetro oculto _method a cualquier formulario que no sea GET o POST:

    <input type="hidden" name="_method" value="PUT">

    Esto se puede hacer automáticamente en frameworks a través del método HTML creation helper (ej. Rails form_tag )

  • arregla el método de formulario real a POST ( <form method="post" )

  • _method en el servidor y hacer exactamente como si ese método hubiera sido enviado en lugar del POST real

Justificación / historia de por qué no es posible: https://softwareengineering.stackexchange.com/questions/114156/why-there-are-no-put-and-delete-methods-in-html-forms


De acuerdo con el estándar HTML , no puedes. Los únicos valores válidos para el atributo del método son get y post , que corresponden a los métodos HTTP GET y POST. <form method="put"> es HTML no válido y se tratará como <form> , es decir, enviará una solicitud GET.

En cambio, muchos frameworks simplemente usan un parámetro POST para tunelizar el método HTTP:

<form method="post" ...> <input type="hidden" name="_method" value="put" /> ...

Por supuesto, esto requiere un desempaquetado del lado del servidor.