Dış etki çerezleri geçmek için JQuery içinde getJSON yap?

2 Cevap php

Ben bir dış etki JQuery içinde getJSON kullandığınızda yapılan istek bu etki alanı için çerezleri içermez. Bu yüzden tekil ziyaretçi izleyebilirim ben yazıyorum, benim analytics script için bu kullanıyorum ve komut dosyası çalıştıran dış etki alanındaki bir çerez ayarlamanız gerekir.

The files

domain1.com/website.html

    <script src="http://domain2.com/tracker.js"></script>

domain2.com/tracker.js

//Get information about the user
info = "(here's some things about the user)";

//Send data using JSON
$.getJSON("http://domain2.com/getdata.php?"+info,
            function(data){}
         );

domain2.com/getdata.php

 /******
  * Code to save data and stuff
  *******/

//Get the current cookie (if any).
$current_tid = $_COOKIE['tID'];

//checks if the cookie is a string of 50 characters
if (strlen($current_tid)==50){
  $TrackerID = $current_tid; //If the cookie already have a unique string, then use it!
} else {
  $TrackerID = random_gen(50); //Generates a new random string with 50 characters
}

//Set cookie "tID" with the unique variable $TrackerID
setcookie("tID",$TrackerID,time()+60*60*24*365);

Yani, şey, kullanıcı yükleri Sunucu1'e website.html zaman, kullanıcı da getdata.php için JSON ile bazı verileri gönderir Sunucu2 tracker.js yükler olmasıdır. Ancak, script çerezleri göndermek değildir ve getdata.php yeni bir dize komut yüklenen her zaman üretecektir.

JSON kullanarak tanımlama göndermek için herhangi bir yolu var mı?

2 Cevap

Sen yerine düzenli JSON JSONP kullanmalısınız:

Eğer Senaryoda bu eklemeniz gerekir:

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

Ve yerine orijinal JSON, PHP komut dosyası formatında JSON dönmek gerekir:

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

More info on JSONP and jQuery is available here.

Benim durumumda, 3. parti çerezleri reddetmek / izin default (3. parti çerezleri) tarafından son safari bloklar tarayıcıda bir güvenlik ayarı vardır.

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

You could try: 1) Send your tid from www.domain2.com include, and use the js to set this tid value on a cookie stored on www.example1.com.

İzleme komut dosyası dahil edildiğinde 2), bu içeren bir parametre olarak, www.example1.com 's çerez saklanan TID üzerinden göndermek için güncelleyin.

Bu şekilde cookie (yani alışkanlık varsayılan be bloke olsun) www.domain1.com ayarlanır. Sen sadece çerez değeri www.domain1.com üzerinde varsa, www.domain2.com üzerinde izleme komut dosyası için bir parametre olarak www.domain1.com TID çerez değerini göndermek için JS bir korkak biraz yazmak gerekir.