2012-01-12 89 views
11

Supongamos que tengo un conjunto de cookies en first.com say user. Ahora quiero leer esa cookie en second.com a través de javascript y ajax. Pero no funciona. Tengo xmlHttp.status = 0.cómo obtener cookies de un dominio diferente con php y javascript

ejemplo de código

en el archivo readcookie.php segundo 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); 
     } 
    } 

en el archivo cookie.php primer dominio

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

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

+0

¿Podemos organizar que first.com especifique que se trata de cookies? puede ser leído por second.com? –

Respuesta

16

No se pueden leer las cookies de otro dominio - final de.

La única forma en que puedo pensar es agregar un código al segundo dominio que obtiene las cookies para usted y luego colocarlo en una página en el primer dominio, en un iframe.

Obviamente, necesita acceso total a ambos dominios para poder hacer este tipo de cosas.

+0

¿Por qué no podemos leer las cookies de otro dominio utilizando los lenguajes de scripting? – Pratik

+0

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

+5

Por razones de seguridad. Si pudiera leer las cookies de otros dominios, cada sitio que visite tendría acceso a todas las cookies de su PC. – Archer

8

Su problema es que los navegadores no permiten que javascript acceda a diferentes dominios. Agregue:

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

líneas al principio de cookie.php y funcionará. Aún así, no obtendrá la cookie (o al menos en Chrome). Todavía no pude entender por qué. Parece que Chrome crea una nueva sesión para javascript y no permite que esa sesión acceda a las cookies anteriores. Como HttpOnly.

Cuestiones relacionadas