¿Hacer getJSON en JQuery para pasar cookies al dominio externo?

Cuando uso getJSON en JQuery para un dominio externo, la solicitud que se realiza no incluye cookies para ese dominio. Estoy usando esto para mi script analítico que estoy escribiendo y necesito establecer una cookie en el dominio externo donde se ejecuta el script para poder rastrear visitantes únicos.

Los archivos

domain1.com/website.html

      

domain2.com/tracker.js

 // Obtener información sobre el usuario
 info = "(aquí hay algunas cosas sobre el usuario)";

 // Enviar datos usando JSON
 $ .getJSON ("http://domain2.com/getdata.php?" + info,
             función (datos) {}
          );

domain2.com/getdata.php

  / ******
   * Código para guardar datos y cosas
   ******* /

 // Obtenga la cookie actual (si la hay).
 $ current_tid = $ _COOKIE ['tID'];

 // verifica si la cookie es una cadena de 50 caracteres
 if (strlen ($ current_tid) == 50) {
   $ TrackerID = $ current_tid;  // Si la cookie ya tiene una cadena única, ¡úsala!
 } else {
   $ TrackerID = random_gen (50);  // Genera una nueva cadena aleatoria con 50 caracteres
 }

 // Establecer la cookie "tID" con la variable única $ TrackerID
 setcookie ("tID", $ TrackerID, time () + 60 * 60 * 24 * 365);

Entonces, el problema es que cuando el usuario carga web.html en el servidor 1, el usuario también carga tracker.js en el servidor2, que envía algunos datos con JSON a getdata.php. Sin embargo, el script no envía cookies y getdata.php generará una nueva cadena cada vez que se cargue el script.

¿Hay alguna forma de enviar cookies usando JSON?

Deberías usar JSONP en lugar de JSON regular:

En tu script deberías agregar esto:

$.getJSON("http://domain2.com/getdata.php?callback=?&"+info, function(data){} ); 

Y en lugar del JSON original, tu script PHP debería devolver tu JSON en el formato:

 header("Content-Type: text/javascript"); $callback = $_GET["callback"]; print "$callback("; // Code to produce the JSON output as normal print ");"; 

Más información sobre JSONP y jQuery está disponible aquí .

En mi experiencia, permitir / rechazar cookies de terceros es una configuración de seguridad en el navegador, que el último safari bloquea de forma predeterminada (cookies de terceros).

http://www.willmaster.com/library/cookies/setting-a-cookie-on-a-remote-domain.php http://www.bobulous.org.uk/misc/third-party-cookies.html

Podría intentar: 1) Enviar su tid desde http://www.domain2.com include, y usar js para establecer este valor tid en una cookie almacenada en http://www.example1.com.

2) Cuando incluya su script de seguimiento, actualícelo para enviarlo a través del TID almacenado en la cookie de http://www.example1.com, como un parámetro para el include.

De esta forma, la cookie se configura en http://www.domain1.com (por lo que no se bloqueará de manera predeterminada). Solo necesita escribir un poco funky de JS para enviar el valor de cookie TID de http://www.domain1.com como un parámetro al script de seguimiento en http://www.domain2.com, si el valor de la cookie existe en http://www.domain1.com.