¿Cuándo debería usar el método GET o POST? ¿Cual es la diferencia entre ellos?

¿Cuál es la diferencia cuando se usa el método GET o POST ? ¿Cuál es más seguro? ¿Cuáles son (des) ventajas de cada uno de ellos?

( pregunta similar )

No es una cuestión de seguridad. El protocolo HTTP define las solicitudes de tipo GET como idempotentes , mientras que las POST pueden tener efectos secundarios. En lenguaje simple, eso significa que GET se utiliza 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 cambia su contraseña debe usar POST.

Además, tenga en cuenta que PHP confunde los conceptos un poco. Una solicitud POST obtiene entrada de la cadena de consulta y a través del cuerpo de la solicitud. Una solicitud GET solo obtiene entrada de la cadena de consulta. Entonces una solicitud POST es un superconjunto de una solicitud GET; puede usar $_GET en una solicitud POST, y puede tener sentido tener parámetros con el mismo nombre en $_POST y $_GET que signifiquen cosas diferentes.

Por ejemplo, supongamos que tiene un formulario para editar un artículo. El id. De artículo puede estar en la cadena de consulta (y, por lo tanto, está disponible a través de $_GET['id'] ), pero digamos que desea cambiar el Id. De artículo. La nueva identificación puede estar presente en el cuerpo de la solicitud ( $_POST['id'] ). OK, tal vez ese no sea el mejor ejemplo, pero espero que ilustre la diferencia entre los dos.

Cuando el usuario ingresa información en un formulario y hace clic en Enviar, hay dos formas en que la información se puede enviar desde el navegador al servidor: en la URL o en el cuerpo de la solicitud HTTP.

El método GET, que se utilizó en el ejemplo anterior, agrega pares de nombre / valor a la URL. Lamentablemente, la longitud de una URL es limitada, por lo que este método solo funciona si solo hay unos pocos parámetros. La URL se puede truncar 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 que se muestre 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 lo convierte en una URL más limpia e impone limitaciones de tamaño en la salida de formularios. También es más seguro.

La mejor respuesta fue la primera.

Tu estas usando:

  • GET cuando desee recuperar datos (OBTENER DATOS).
  • POST cuando desee enviar datos (POST DATA).

Aquí está el punto clave de la solicitud GET

  • Las solicitudes GET pueden almacenarse en caché
  • Las solicitudes GET permanecen en el historial del navegador
  • Las solicitudes GET se pueden marcar
  • Las solicitudes GET nunca se deben usar cuando se trata de datos confidenciales
  • Las solicitudes GET tienen restricciones de longitud
  • Las solicitudes GET deben usarse solo para recuperar datos

y aquí está el punto 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

Hay dos implicaciones comunes de “seguridad” para usar GET. Dado que los datos aparecen en la cadena de URL, es posible que alguien que esté mirando por encima de su hombro en la barra de direcciones / URL pueda ver algo que no debería estar al tanto, como una cookie de sesión que podría ser utilizada 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 que las variables GET que se registran en la mayoría de los servidores web acceden al registro como parte de la URL solicitante. Dependiendo de la situación, el clima regulatorio y la sensibilidad general de los datos, esto puede generar inquietudes.

Algunos clientes / firewalls / sistemas IDS pueden desaprobar las solicitudes GET que contienen una cantidad excesiva de datos y, por lo tanto, pueden proporcionar resultados no correlativos.

POST admite una funcionalidad avanzada, como la compatibilidad con la entrada binaria de varias partes utilizada para subir archivos a servidores web.

POST requiere un encabezado de longitud de contenido que puede boost 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 previamente para evitar que se forme una solicitud de cliente en un modo incremental de paso único exclusivo. Quizás un problema menor para aquellos que eligen abusar de HTTP utilizá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.

Uso GET cuando recupero información de una URL y POST cuando envío información a una URL.

Debería usar POST si hay una gran cantidad de datos o información delicada (las cosas realmente confidenciales también necesitan una conexión segura).

Use GET si desea que las personas puedan marcar su página, porque todos los datos se incluyen con el marcador.

Solo tenga cuidado con las personas que presionan REFRESH con el método GET, ya que los datos se enviarán de nuevo cada vez sin advertir al usuario (POST a veces advierte al usuario sobre el reenvío de datos).

Los métodos Get y Post no tienen nada que ver con la tecnología de servidor que está utilizando, funciona igual en php, asp.net o ruby. GET y POST son parte del protocolo HTTP. Como se señaló, 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.

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, operación de lectura o 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 perciba (por ejemplo, una suscripción a un servicio), o
    • El usuario debe rendir cuentas por los resultados de la interacción.

La razón para usar POST al hacer 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, puede 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 en la solicitud.

Además, no coloque información confidencial en la cadena de consulta (solo la opción con GET) porque aparece en la barra de direcciones, los marcadores y los registros del servidor.

Esperemos que esto explique por qué las personas dicen que POST es ‘seguro’. Si está transmitiendo datos sensibles, debe usar SSL.

GET y POST son métodos HTTP que pueden lograr objectives similares

GET es básicamente para obtener (recuperar) datos, A GET no debe tener un cuerpo, así que aparte de las cookies, el único lugar para pasar información está en la URL y las URL tienen una longitud limitada, GET es menos seguro que 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 sensible! Los datos están visibles para todos en la URL, se pueden almacenar datos en caché. GET es inofensivo cuando estamos recargando o llamando al botón Atrás, estará marcado como libro, los parámetros permanecen en el historial del navegador, solo los caracteres ASCII permitidos.

POST puede involucrar cualquier cosa, como almacenar o actualizar datos, o pedir un producto, o enviar un correo electrónico. POST método POST tiene un cuerpo.

POST método POST está asegurado para pasar información sensible y confidencial al servidor, no estará visible en los parámetros de consulta en la URL y los parámetros no se guardan en el historial del navegador. No hay restricciones en la longitud de los datos. Cuando recargamos el navegador, debemos alertar al usuario de que los datos están a punto de ser reenviados. POST método POST no se puede marcar como favorito

  1. 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.
  2. Usando el método POST puede enviar una gran cantidad de datos en comparación con el método GET.
  3. Los datos enviados por el método GET son visibles en la barra de encabezado del navegador, mientras que el método de envío de datos por POST es invisible.

Use el método GET si desea recuperar los recursos de la URL. Siempre puede ver la última página si presiona el botón Atrás de su navegador, y puede marcarse como favorito, por lo que no es tan seguro como el método POST.

Use el método POST si quiere ‘enviar’ algo a la URL. Por ejemplo, desea crear una cuenta de Google y es posible que deba completar toda la información detallada, luego presione el botón ‘enviar’ (se llama aquí el método POST), una vez que lo envíe correctamente, e intente presionar el botón Atrás de su navegador , obtendrá un error o un nuevo formulario en blanco, en lugar de la última página con el formulario rellenado.

Algunas notas importantes deben mencionarse

De acuerdo con la explicación de w3cschools.com

Para obtener el método:

  • Las solicitudes GET pueden almacenarse en caché

  • Las solicitudes GET permanecen en el historial del navegador

  • Las solicitudes GET se pueden marcar

  • Las solicitudes GET nunca se deben usar cuando se trata de datos confidenciales

  • Las solicitudes GET tienen restricciones de longitud

  • Las solicitudes GET deben usarse solo para recuperar datos

Para el método de publicación

  • 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

Obtenga más detalles sobre

https://www.w3schools.com/tags/ref_httpmethods.asp

El método GET :

  • Se usa solo para enviar una fecha de 256 caracteres

  • Al usar este método, la información se puede ver en el navegador

  • Es el método predeterminado utilizado por los formularios

  • No es tan seguro.


El método POST :

  • Se usa 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 funciones más avanzadas