GET vs POST en Ajax

¿Cuál es la diferencia entre GET y POST para las solicitudes de Ajax ?

No veo ninguna diferencia entre esos dos, excepto que cuando uso GET , los parámetros se envían en URL, lo que para mí realmente no hace ninguna diferencia, ya que todas las solicitudes se hacen en segundo plano y el usuario no encuentra ninguna diferencia.

editar: ¿Para qué se utilizan los métodos PUT y DELETE ?

GET está diseñado para obtener datos del servidor. POST (y los amigos menos conocidos PUT y DELETE) están diseñados para modificar datos en el servidor.

Una solicitud GET nunca debe hacer que se eliminen datos de una aplicación. Si tiene un enlace, puede hacer clic con un GET para eliminar datos, y luego, al hacer un seguimiento de su sitio, puede hacer clic en todos sus enlaces “Eliminar”.

La respuesta canónica se puede encontrar aquí , que cita la especificación de HTML 2.0:

Si el procesamiento de una forma es idempotente (es decir, no tiene un efecto observable duradero sobre el estado del mundo), entonces el método de la forma debe ser GET. Muchas búsquedas en bases de datos no tienen efectos secundarios visibles y son aplicaciones ideales de formularios de consulta.

Si el servicio asociado con el procesamiento de un formulario tiene efectos secundarios (por ejemplo, modificación de una base de datos o suscripción a un servicio), el método debe ser POST.

En su llamada AJAX, necesita usar cualquier método que su servidor admita. Siempre debe diseñar su servidor para que las operaciones que modifican datos sean llamadas por POST / PUT / DELETE. Otros comentarios tienen enlaces a REST, que generalmente asigna C / R / U / D a “POST o PUT” (Crear) / GET (Leer) / PON (Actualizar) / BORRAR (Eliminar).

Si envía grandes cantidades de datos o datos confidenciales a través de HTTPS, querrá usar POST. Si es solo un parámetro simple, usaría GET.

Las solicitudes GET tienen un límite en la cantidad de datos que se pueden enviar. Olvidé el número exacto, pero esto puede causar problemas si envía algo sustancial.

Básicamente, la diferencia entre GET y POST es que en una solicitud GET, los parámetros se pasan en la URL donde, como en una POST, los parámetros se incluyen en el cuerpo del mensaje.

Si su AJAX o no es irrelevante. Es sobre la acción que estás tomando. Yo recomendaría seguir los principios de REST . Que tienen disposiciones adicionales para la actualización, eliminación, etc.

Las solicitudes GET son más fáciles de explotar en los ataques CSRF (falsificación de solicitudes entre sitios). A saber, las solicitudes POST falsas requieren que Javascript esté habilitado en el lado del usuario, mientras que las solicitudes GET falsas todavía son posibles solo con img, tags de script.

Muchos servidores web limitan la longitud de los datos que se pueden pasar como parte de la URL, por lo que la solicitud GET puede romperse de maneras extrañas que son difíciles de depurar.

Además, la mayoría de los progtwigs de servidor registran las direcciones URL en los registros de acceso, de modo que si transfiere información confidencial (como contraseñas) en una solicitud GET, con toda probabilidad se escribirá en disco en texto plano.

Desde una perspectiva REST, las solicitudes GET no deberían tener efectos secundarios, no deberían modificar los datos. Entonces, si solo está OBTENIENDO un recurso por ID, esto tiene sentido, pero si está realizando cambios en un recurso, debe usar PUT, POST o UPDATE para el verbo http.

Ambos se utilizan para enviar algunos datos y recibir alguna respuesta con esos datos.

OBTENER: Obtener información tienda en el servidor. Es decir. Búsqueda, tweet, información de la persona. Si desea enviar información, obtenga la solicitud de envío de solicitud usando process.php? Name = subroto. Por lo tanto, básicamente envía información a través de la url. Url no puede manejar más de 2083 char. Entonces, ¿puede recordar que no es posible para una publicación de blog?

POST: Publicar hacer lo mismo que obtener. Registro de usuario, inicio de sesión de usuario, envío de Big Data, publicación de blog. Si necesita enviar información segura, utilice la publicación o para big data ya que no pasa por la url.

AJAX: $ .get () y $ .post () contienen características que son subconjuntos de $ .ajax (). Tiene mucha configuración.

$ .get () método, que es una especie de abreviatura de $ .Ajax (). Cuando se usa $ .get (), en lugar de pasar un objeto, se pasan argumentos. Como mínimo, necesitará los primeros dos argumentos, que son la URL del archivo que desea recuperar (es decir, ‘test.txt’) y una callback exitosa.

Resumen:

$.get( url [, data ] [, success ] [, dataType ] ) $.post( url [, data ] [, success ] [, dataType ] ) // for sending secure or Large information $.ajax( url [, settings ] ) // More Configaration 

Sobre mí, prefiero POST. Me reservo llegar a los eventos que sé que el valor enviado se limita a los datos que tengo el “control”, por ejemplo, para recuperar un elemento con una identificación. Ejemplo, “getitem? Id = 123”, “deleteImtem? Id = 123”, … Para los otros casos, cuando tengo un formulario rellenable por un usuario, prefiero POST.

Como dijo Ryan Smith, es mejor usar POST para enviar una gran cantidad de datos, y menos argumentos en el caso del uso en otros idiomas / caracteres especiales (en general, todos los mayores marcos de JavaScript no deberían tener ningún problema para lidiar con eso, pero creo que hay menos razones para usar POST).

Para la perspectiva de REST, en mi opinión, puede usar esto con un nuevo proyecto (para mantener una coherencia con todo el proyecto).

Finalmente, quizás algunos progtwigs utilizados en una red (URL loguers (es decir: para ver si los empleados perdieron su tiempo en sitios no autorizados, …) proxys, …) o cualquier otro tipo de herramienta puede interceptar la consulta . Somes mostrará en los informes los parámetros que ha enviado con GET, considerándolo como una página web diferente. Pero en esta situación, no podría ser su problema, ¡se trata de cambios de un proyecto a otro! 😉

Primero, información general. Use GET si solo lee datos, use POST si cambia algo en la base de datos, archivos txt, etc.

Pero el problema es que algunos buscadores de caché obtienen resultados. Tuve problemas con AJAX solicitudes de AJAX en IE7, pero finalmente descubrí que el navegador almacena en caché los resultados de GET . Repensé el flujo y cambio mi solicitud a POST .

Por lo tanto, no use GET si no desea el almacenamiento en caché.

(Por supuesto, puede desactivar el almacenamiento en caché en operaciones GET. Pero yo no lo preferí)

La diferencia es la misma entre GET y POST si usa Ajax, form HTML o curl . Aquí están las definiciones relevantes:

  • OBTENER
  • ENVIAR

Si está transmitiendo cualquier argumento con caracteres que pueden desordenarse en la URL (como espacios), usa POST. De lo contrario, puedes usar GET.

En general, si solo está transmitiendo algunos argumentos pequeños, usaría GET. Pero para pasar información enviada por el usuario, como entradas de blog, texto, etc., es una buena práctica usar POST.

También existen ciertos marcos que dependen completamente de urls basadas en segmentos (tales como site.com/products/133 lugar de site.com/products.php?id=333 y estos marcos descomponen las variables GET para la seguridad. En tales casos, use POST todo el tiempo.