2012-01-12 13 views
11

Supponiamo di avere un set di cookie in first.com dire utente. Ora voglio leggere quel cookie in second.com tramite javascript e ajax. Ma non funziona. Ho xmlHttp.status = 0.come ottenere i cookie da un dominio diverso con php e javascript

esempio di codice

nel file readcookie.php secondo dominio

var xmlHttp; 
    function createXMLHttpRequest(){ 
     if(window.ActiveXObject) 
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     if(window.XMLHttpRequest) 
      xmlHttp=new XMLHttpRequest(); 
    } 
    function readcookie(){ 

     createXMLHttpRequest(); 
     xmlHttp.open("GET","http://www.first.com/cookie.php",true); 
     xmlHttp.onreadystatechange=getcookie; 
     xmlHttp.send(null); 
    } 
    function getcookie(){ 
     if(xmlHttp.readyState==4){ 
      if(xmlHttp.status==200){ 
       var reply=xmlHttp.responseText; 
       if(reply){ 
        alert(reply); 
       } 
      } 
      else 
       alert(xmlHttp.status); 
     } 
    } 

nel file cookie.php primo dominio

if(isset($_COOKIE['user'])){ 
     echo $_COOKIE['user']; 
    } 
    else{ 
     setcookie('user','a2345',0); 
     echo $_COOKIE['user']; 
    } 
+0

dare un'occhiata a http://stackoverflow.com/questions/402348/getting-setting-cookies-on-different-domains-with-javascript-or-other – Nobita

+0

Possiamo organizzare che first.com specifichi che si tratta di cookie può essere letto da second.com? –

risposta

16

Non è possibile leggere i cookie da un altro dominio - fine di.

L'unico modo che posso pensare è di aggiungere del codice al 2 ° dominio che ottiene i cookie per te e quindi di inserirlo in una pagina del primo dominio, in un iframe.

Ovviamente è necessario un accesso completo a entrambi i domini per poter fare questo genere di cose.

+0

perché non possiamo leggere i cookie da un altro dominio usando le lingue di scripting? – Pratik

+0

http://stackoverflow.com/a/402354/368472 – Pratik

+5

Per motivi di sicurezza. Se tu potessi leggere i cookie da altri domini allora ogni sito che visiterai avrebbe accesso a tutti i cookie sul tuo PC. – Archer

8

Il tuo problema è che i browser non consentono a javascript di accedere a domini diversi. Aggiungi:

header('Content-type: text/html');  
header('Access-Control-Allow-Origin: *'); 

righe all'inizio di cookie.php e funzionerà. Ancora, non si ottiene il cookie (o almeno in Chrome). Non riuscivo ancora a capire perché. Sembra che Chrome crei una nuova sessione per il javascript e non permetta a quella sessione di accedere ai cookie precedenti. Come HttpOnly.

Problemi correlati