2011-01-23 13 views
7

Necesito saber la diferencia entre CURL (en PHP) y AJAX (en Javascript) cuando se trata de conocer la fuente de la solicitud.AJAX versus CURL

ACTUALIZADO: Lo que yo quiero saber es si estoy generando solicitudes de uso de AJAX lo que la dirección IP del remitente se recibiría en el lado del servidor con el paquete como fuente? Lo mismo ocurre con CURL y para todos los usuarios se enviará una única dirección IP. ¿Pero es ese el mismo caso con JS? JS se ejecuta en el lado del cliente, ¿sería la dirección IP del cliente?

+0

Puede ser un duplicado de http://stackoverflow.com/questions/4738380/what-differences-are-there-between-form-submissions-and-curl-requests – arnaud576875

+0

No, no lo es. Necesito saber la fuente de la solicitud cuando es CURL o AJAX – Neutralizer

Respuesta

14

cURL es un proceso del lado del servidor. Esto significa que se llamará antes de que se represente la página y no tiene nada que ver con las capacidades del cliente.

AJAX, sin embargo, es una llamada del lado del cliente. esto significa que no se ejecutará hasta que el cliente carga la página (o al menos ese fragmento de código se ve y se ejecuta, pero normalmente está en document.ready).

Si está buscando recuperar la información y enviarla al usuario inmediatamente, entonces cURL es su mejor opción. Si desea realizar una carga progresiva (volcar la página y luego recuperar el contenido para una carga "sin interrupciones" para el usuario), AJAX es la mejor opción. Mientras tanto, tenga en cuenta que, aunque en la actualidad es semi trivial, AJAX puede no ser siempre compatible (o desactivado en casos del complemento NoScript de FireFox).

Dicho esto, la fuente de la ejecución de cURL estará en el servidor. El origen de la solicitud de AJAX será por cliente. Ninguno de los cuales proporciona un medio seguro de detección (en el lado del servidor) para saber quién envió qué (ya que los encabezados pueden modificarse).

0

Si está intentando detectar qué método se utilizó como origen de una solicitud, no hay forma de saberlo con certeza. La mayoría de los navegadores usan el encabezado HTTP X-Requested-With cuando se envía una solicitud a través de AJAX. La biblioteca cURL envía un agente de usuario de manera predeterminada, pero esto obviamente puede ser alterado por la biblioteca. Ambos métodos pueden falsificarse fácilmente y no deben usarse para una validación estricta.

Editar:

La petición AJAX vendrá del cliente que realizó la petición AJAX. La solicitud cURL vendrá desde donde se usó la biblioteca. (Por ejemplo, si está usando PHP, vendrá del servidor PHP. Si lo está utilizando a través de CLI, vendrá del servidor donde ejecutó el comando)

Obviamente, las solicitudes podrían estar detrás de los proxies , etc.

0

La dirección IP que solicitó el archivo javascript del servidor será la misma que la dirección IP que activó la solicitud ajax del servidor desde ese archivo. Vea el same origin policy.

+0

De acuerdo con eso, si creo una página web que activará la solicitud de AJAX para decir algo de www.nnn.com, cualquier usuario que use mi página web rechazará esta solicitud desde su IP . ¿derecho? – Neutralizer

+1

Sí, esto es lo que Brad y yo hemos dicho. Nota: AJAX está limitado por la misma política de origen: no puede realizar una solicitud de AJAX a un dominio diferente al solicitado por la solicitud. – William