forms - otro - ¿Cuándo debo usar el método GET o POST? ¿Cual es la diferencia entre ellos?
metodo post javascript (14)
- El método GET se usa para enviar los datos menos confidenciales, mientras que el método POST se usa para enviar los datos confidenciales.
- Usando el método POST puede enviar una gran cantidad de datos en comparación con el método GET.
- Los datos enviados por el método GET son visibles en la barra de encabezado del navegador, mientras que los datos enviados por el método POST son invisibles.
¿Cuál es la diferencia al usar el método GET
o POST
? ¿Cuál es más seguro? ¿Cuáles son las (des) ventajas de cada uno de ellos?
( pregunta similar )
Cuando el usuario ingresa información en un formulario y hace clic en Enviar, hay dos maneras de enviar la información desde el navegador al servidor: en la URL o en el cuerpo de la solicitud HTTP.
El método GET, que se usó en el ejemplo anterior, agrega pares de nombre / valor a la URL. Desafortunadamente, la longitud de una URL es limitada, por lo que este método solo funciona si solo hay unos pocos parámetros. La URL podría truncarse si el formulario utiliza una gran cantidad de parámetros, o si los parámetros contienen grandes cantidades de datos. Además, los parámetros que se pasan en la URL son visibles en el campo de dirección del navegador, no es el mejor lugar para mostrar una contraseña.
La alternativa al método GET es el método POST. Este método empaqueta los pares de nombre / valor dentro del cuerpo de la solicitud HTTP, lo que crea una URL más limpia y no impone limitaciones de tamaño en la salida de los formularios. También es más seguro.
Debe usar POST si hay una gran cantidad de datos, o una especie de información sensible (las cosas realmente sensibles también necesitan una conexión segura).
Utilice GET si desea que las personas puedan marcar su página como favorito, porque todos los datos se incluyen con el marcador.
Solo tenga cuidado de que las personas presionen REFRESH con el método GET, ya que los datos se enviarán nuevamente cada vez sin advertir al usuario (POST a veces advierte al usuario sobre el reenvío de datos).
Desde w3schools.com aquí están los puntos clave de la solicitud GET.
- Las solicitudes GET se pueden almacenar en caché
- Las solicitudes GET permanecen en el historial del navegador
- Las solicitudes GET se pueden marcar como favoritos
- Las solicitudes GET nunca deben usarse cuando se trata de datos confidenciales
- Las solicitudes GET tienen restricciones de longitud
- Las solicitudes GET se deben utilizar solo para recuperar datos
Y aquí están los puntos clave de la solicitud POST.
- Las solicitudes POST nunca se almacenan en caché
- Las solicitudes POST no permanecen en el historial del navegador
- Las solicitudes POST no pueden ser marcadas
- Las solicitudes POST no tienen restricciones en la longitud de los datos
Este documento W3C explica el uso de HTTP GET y POST.
Creo que es una fuente autorizada.
El resumen es (sección 1.3 del documento):
- Use GET si la interacción es más como una pregunta (es decir, es una operación segura, como una consulta, una operación de lectura o una búsqueda).
- Use POST si:
- La interacción es más como una orden, o
- La interacción cambia el estado del recurso de una manera que el usuario percibe (por ejemplo, una suscripción a un servicio), o
- El usuario será responsable de los resultados de la interacción.
Hay dos implicaciones comunes de "seguridad" en el uso de GET. Dado que los datos aparecen en la cadena de la URL, es posible que alguien que mira por encima de su hombro en la Barra de direcciones / URL pueda ver algo a lo que no deberían tener acceso, como una cookie de sesión que podría usarse para secuestrar su sesión. Tenga en cuenta que todos tienen teléfonos con cámara.
La otra implicación de seguridad de GET tiene que ver con las variables GET que se registran en la mayoría de los servidores web acceden al registro como parte de la URL de solicitud. Dependiendo de la situación, el clima regulatorio y la sensibilidad general de los datos, esto puede generar inquietud.
Algunos sistemas de clientes / firewalls / IDS pueden desaprobar las solicitudes GET que contienen una cantidad excesiva de datos y, por lo tanto, pueden proporcionar resultados irreparables.
POST admite funcionalidades avanzadas, como la compatibilidad con entradas binarias de varias partes que se utilizan para cargar archivos en servidores web.
POST requiere un encabezado de longitud de contenido que puede aumentar la complejidad de una implementación de cliente específica de la aplicación, ya que el tamaño de los datos enviados debe conocerse de antemano para evitar que la solicitud de un cliente se forme en un modo incremental de un solo paso exclusivo. para aquellos que eligen abusar de HTTP usándolo como un transporte RPC.
Otros ya han hecho un buen trabajo al cubrir las diferencias semánticas y la parte "cuándo" de esta pregunta.
La mejor respuesta fue la primera.
Tu estas usando:
- GET cuando quieras recuperar datos (GET DATA).
- POST cuando desee enviar datos (POST DATA).
La razón para usar POST al realizar cambios en los datos:
- Un acelerador web como Google Web Accelerator hará clic en todos los enlaces (GET) en una página y los almacenará en caché. Esto es muy malo si los enlaces hacen cambios a las cosas.
- Un navegador almacena en caché las solicitudes GET, por lo que incluso si el usuario hace clic en el enlace, es posible que no envíe una solicitud al servidor para ejecutar el cambio.
- Para proteger su sitio / aplicación contra CSRF, debe usar POST. Para asegurar completamente su aplicación, también debe generar un identificador único en el servidor y enviarlo junto con la solicitud.
Además, no coloque información confidencial en la cadena de consulta (solo opción con GET) porque se muestra en la barra de direcciones, marcadores y registros del servidor.
Esperemos que esto explique por qué la gente dice que POST es ''seguro''. Si está transmitiendo datos confidenciales, debe utilizar SSL.
Los métodos de obtención y publicación no tienen nada que ver con la tecnología de servidor que está utilizando, funciona de la misma manera en php, asp.net o ruby. GET y POST son parte del protocolo HTTP. Como señala la marca, POST es más seguro. Los formularios POST tampoco son almacenados en caché por el navegador. POST también se utiliza para transferir grandes cantidades de datos.
No es una cuestión de seguridad. El protocolo HTTP define las solicitudes de tipo GET como idempotent , mientras que las POST pueden tener efectos secundarios. En un lenguaje sencillo, eso significa que GET se usa para ver algo, sin cambiarlo, mientras que POST se usa para cambiar algo. Por ejemplo, una página de búsqueda debe usar GET, mientras que un formulario que cambie su contraseña debe usar POST.
Además, tenga en cuenta que PHP confunde un poco los conceptos. Una solicitud POST obtiene información de la cadena de consulta y del cuerpo de la solicitud. Una solicitud GET solo obtiene entrada de la cadena de consulta. Por lo tanto, una solicitud POST es un superconjunto de una solicitud GET; puede usar $_GET
en una solicitud POST, e incluso puede tener sentido tener parámetros con el mismo nombre en $_POST
y $_GET
que significan cosas diferentes.
Por ejemplo, supongamos que tiene un formulario para editar un artículo. El artículo-id puede estar en la cadena de consulta (y, por lo tanto, disponible a través de $_GET[''id'']
), pero digamos que desea cambiar el artículo-id. La nueva ID puede estar presente en el cuerpo de la solicitud ( $_POST[''id'']
). Bueno, quizás ese no sea el mejor ejemplo, pero espero que ilustre la diferencia entre los dos.
Utilice el método GET si desea recuperar los recursos de la URL. Siempre puede ver la última página si presiona el botón de retroceso de su navegador, y se puede marcar como favorito, por lo que no es tan seguro como el método POST.
Utilice el método POST si desea "enviar" algo a la URL. Por ejemplo, si desea crear una cuenta de Google y es posible que deba completar toda la información detallada, luego presione el botón ''enviar'' (aquí se llama al método POST), una vez que lo envíe con éxito e intente volver a pulsar el botón de su navegador. , obtendrá un error o un nuevo formulario en blanco, en lugar de la última página con el formulario completado.
Utilizo GET cuando estoy recuperando información de una URL y POST cuando envío información a una URL.
GET
y POST
son métodos HTTP que pueden alcanzar objetivos similares
GET
es básicamente para obtener (recuperar) datos, un GET
no debe tener un cuerpo, por lo que, aparte de las cookies, el único lugar para pasar información es en la URL y las URL son limitadas, GET
es menos seguro en comparación con POST
porque los datos enviado es parte de la URL
Nunca use GET
cuando envíe contraseñas, tarjetas de crédito u otra información confidencial. Los datos son visibles para todos en la URL. Se pueden almacenar datos en caché. GET
es inofensivo cuando estamos recargando o devolviendo la llamada al botón, estará marcado en el libro, los parámetros permanecerán en el historial del navegador, solo se permiten caracteres ASCII.
POST
puede implicar cualquier cosa, como almacenar o actualizar datos, ordenar un producto o enviar correo electrónico. POST
método POST
tiene un cuerpo.
POST
método POST
está protegido para pasar información sensible y confidencial al servidor, no se verá en los parámetros de consulta en la URL y los parámetros no se guardarán en el historial del navegador. No hay restricciones en la longitud de los datos. Cuando volvamos a cargar, el navegador debe alertar al usuario de que los datos están a punto de volver a enviarse. POST
método POST
no se puede marcar como favorito
El método GET
:
Se usa solo para enviar fecha de 256 caracteres.
Al utilizar este método, la información se puede ver en el navegador.
Es el método por defecto utilizado por los formularios.
No es tan seguro.
El método POST
:
Se utiliza para enviar datos ilimitados.
Con este método, la información no se puede ver en el navegador.
Puedes mencionar explícitamente el método
POST
Es más seguro que el método
GET
Proporciona características más avanzadas.