Atributo method del <form> de HTML
Definición y uso
method
La propiedad especifica cómo enviar los datos del formulario (los datos del formulario se enviarán a la página especificada por la propiedad action).
Los datos del formulario se pueden enviar como variables de URL (usando method="get") o como transacción HTTP POST (usando method="post")
Acerca de GET:
- Adjunte los datos del formulario en forma de pares de nombre/valor a la URL
- La URL tiene un límite de longitud (aproximadamente 3000 caracteres)
- ¡No utilice GET para enviar datos sensibles! (Serán visibles en la URL)
- Muy útil para los formularios de envío de resultados que los usuarios desean marcar como favoritos
- GET es más adecuado para datos no seguros, como las cadenas de consulta en Google.
Acerca de POST:
- Adjuntar los datos del formulario en el cuerpo de la solicitud HTTP (los datos no se mostrarán en la URL).
- Sin límite de tamaño.
- Los formularios enviados con POST no se pueden agregar a los favoritos.
Ejemplo
Ejemplo 1
Enviar el formulario utilizando el método "get":
<form action="/action_page.php" method="get"> <label for="fname">Nombre:</label> <input type="text" id="fname" name="fname"><br><br> <label for="lname">Apellido:</label> <input type="text" id="lname" name="lname"><br><br> <input type="submit" value="Enviar"> </form>
Ejemplo 2
Enviar el formulario utilizando el método "post":
<form action="/action_page.php" method="post"> <label for="fname">Nombre:</label> <input type="text" id="fname" name="fname"><br><br> <label for="lname">Apellido:</label> <input type="text" id="lname" name="lname"><br><br> <input type="submit" value="Enviar"> </form>
Sintaxis
<form method="get|post">
Valor del atributo
Valor | Descripción |
---|---|
get | Por defecto. Adjuntar los datos del formulario en forma de pares de nombre/valor a la URL: URL?name=value&name=value. |
post | Enviar los datos del formulario como una transacción HTTP POST. |
Detalles del atributo method
El navegador envía los datos del formulario al servidor para su procesamiento utilizando el método configurado con la propiedad method. Hay dos métodos: el método POST y el método GET.
Si se utiliza el método POST, el navegador enviará los datos según dos pasos. Primero, el navegador se pondrá en contacto con el servidor de procesamiento de formularios especificado en la propiedad action, una vez establecida la conexión, el navegador enviará los datos al servidor utilizando el método de transmisión por segmentos.
En el lado del servidor, una vez que el aplicación de estilo POST comienza a ejecutarse, debe leer los parámetros desde una posición de marca y, una vez leídos, debe decodificar estos parámetros antes de que la aplicación pueda utilizar estos valores de formulario. El servidor específico del usuario especificará claramente cómo debe recibir la aplicación estos parámetros.
En otro caso, se utiliza el método GET, en este caso, el navegador establecerá una conexión con el servidor de procesamiento de formularios y luego enviará todos los datos del formulario en una sola etapa de transmisión: el navegador adjuntará los datos directamente después de la URL de acción del formulario. Entre ambos se utiliza un signo de interrogación para separarlos.
Los navegadores pueden transmitir información de formulario mediante cualquiera de estos métodos, mientras que algunos servidores solo aceptan los datos proporcionados por uno de ellos. Puedes especificar en el atributo method (método) del etiqueta <form> el método que el servidor de procesamiento de formularios debe usar para procesar los datos, haciendo que POST o GET.
POST o GET?
Si el servidor de procesamiento de formularios admite tanto el método POST como el GET, ¿cuál método debes elegir? A continuación, se presentan algunas reglas al respecto:
- Si deseas obtener el mejor rendimiento de transmisión de formulario, puedes usar el método GET para enviar formularios pequeños con pocos campos cortos.
- Algunos sistemas operativos de servidores limitan el número y la longitud de los parámetros de línea de comandos que se pueden transmitir inmediatamente a la aplicación, en este caso, para los formularios que tienen muchos campos o campos de texto largos, debes usar el método POST para enviar.
- Si no tienes experiencia suficiente en la escritura de aplicaciones de procesamiento de formularios del lado del servidor, debes elegir el método GET. Si usas el método POST, debes hacer un trabajo adicional en la lectura y decodificación, lo que no es difícil, pero tal vez no desees lidiar con estos problemas.
- Si la seguridad es un problema, recomendamos usar el método POST. El método GET coloca directamente los parámetros del formulario en la URL de la aplicación, lo que permite a los observadores de la red capturarlos fácilmente y extraerlos de los archivos de registro del servidor. Si los parámetros incluyen información sensible como números de tarjetas de crédito, puede poner en peligro la seguridad del usuario sin darse cuenta. Las aplicaciones POST no tienen vulnerabilidades de seguridad, y al transmitir los parámetros como una transacción separada al servidor para su procesamiento, al menos se puede usar el cifrado.
- Si deseas invocar una aplicación del lado del servidor fuera del formulario y transmitirle parámetros, debes usar el método GET, ya que este método permite incluir parámetros como parte de la URL. Por otro lado, las aplicaciones de estilo POST desean que haya un proceso de transmisión adicional del navegador después de la URL, donde el contenido de la transmisión no debe considerarse contenido del etiqueta <a> tradicional.
Transmisión de parámetros clara
Algunos consejos anteriores también pueden ser una cierta explicación para elegir este método. Supongamos que tienes un formulario muy simple que solo contiene los parámetros x e y. Al codificar los valores de estos elementos, tienen la forma siguiente:
x=28&y=66
Si el formulario utiliza method=GET, la URL para referirse a la aplicación del lado del servidor será como se muestra a continuación:
http://www.example.com/example/program?x=28&y=66
En cualquier momento podemos crear un etiqueta <a> tradicional, usarla para invocar un formulario con valores de parámetros necesarios, como se muestra a continuación:
<a href="http://www.example.com/example/program?x=28&y=66">
El único problema es que el símbolo & utilizado para separar los parámetros también es el símbolo de inserción de las entidades de caracteres. Si se coloca un símbolo & en el atributo href de la etiqueta <a>, el navegador reemplazará los caracteres posteriores con la entidad de caracteres correspondiente.
Para evitar este problema, debemos reemplazar el símbolo & con su equivalente de entidad, es decir, con "&" o "&". Después del reemplazo, el ejemplo anterior de aplicación de aplicación de servidor no en forma de formulario será como sigue:
<a href="http://www.example.com/example/program?x=28&y=66">
Dado que aún no se puede usar el símbolo & en la URL y puede causar confusión en el futuro, recomendamos que los servidores también puedan aceptar el punto y coma como separador de parámetros. También puede consultar la documentación del servidor para ver si admite esta función.
Compatibilidad con navegadores
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome | Edge | Firefox | Safari | Opera |
Soporte | Soporte | Soporte | Soporte | Soporte |