Obteniendo la configuración de cookies en diferentes dominios, con javascript u otro

StackOverflow https://stackoverflow.com/questions/402348

  •  03-07-2019
  •  | 
  •  

Pregunta

No he podido encontrar nada particular a esta situación en línea, así que aquí voy ... Necesito configurar / obtener las cookies almacenadas en " first.com " Mientras navego por " second.com " ;, tengo acceso completo a " first.com " pero solo tengo acceso a javascript (puedo manipular el DOM como quiero) en " second.com " ;.

Mi primer enfoque fue crear un iframe en second.com (con js) que cargó una página como " first.com/doAjax? setCookie = xxx " y que hizo un llamado ajax para decir "quot; first.com/setCookie? cookieData = xxx " que establecería la cookie en " first.com " con los datos que pasamos.

Eso funcionó bastante bien para configurar la cookie en first.com desde second.com: para obtener una cookie básicamente seguí el mismo procedimiento, creé el iframe que se cargó " first.com/doAjax? getCookie " y eso haría una llamada ajax para decir " first.com/getCookie" que leería la información de la cookie en first.com y la devolvería como un objeto JSON.

El problema es que no puedo devolver el objeto de cookie JSON a " second.com " así que puedo leerlo, bueno, tal vez podría traerlo cuando se complete la llamada Ajax usando " window.top " pero hay problemas de tiempo porque no es relativo a cuando se ha cargado el iframe. Espero tener claridad y me preguntaba si hay una solución más fácil en lugar de esta mierda de iframe- y gt; ajax, también parece que esto no funcionará para obtener cookies en SAFARI.

¿Fue útil?

Solución

Puede inyectar un elemento de script en HEAD del documento con una devolución de llamada que pase la cookie que necesita a cualquier función que la necesite.

Algo así como:

 <script type="text/javascript">
   var newfile=document.createElement('script');
   newfile.setAttribute("type","text/javascript");
   newfile.setAttribute("src", 'http://first.com/doAjax?getCookie&callback=passCookie');
   document.getElementsByTagName("head")[0].appendChild(newfile);
 </script>

Y la página first.com/doAjax?getCookie podría hacer esto:

     passCookie({'name':'mycookie', 'value':'myvalue'});

Otros consejos

Coloque este archivo PHP en first.com:

//readcookie.php    
echo 

Coloque este archivo PHP en first.com:

function readCookieCallback()
{
   if ((this.readyState == 4) && (this.status == 200))
   {
     alert("the value of the cookie is: "+this.responseText);
   } 
   else if ((this.readyState == 4) && (this.status != 200))
   {
     //error...
   }
}


function buttonClickOrAnything()
{
  var refreshObject = new XMLHttpRequest();
  if (!refreshObject)
  {
    //IE6 or older
    try
    {
      refreshObject = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      try
      {
        refreshObject = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e)
      {
        return;
      }
    }
  }
  refreshObject.onreadystatechange = readCookieCallback;
  refreshObject.open("GET", "http://www.first.com/readcookie.php");
  refreshObject.send();
}

En second.com puede usar este javascript para obtener el valor:

<*>

Saludos, Robert

COOKIE['cookiename'];

En second.com puede usar este javascript para obtener el valor:

<*>

Saludos, Robert

Para CONFIGURAR cookies, puede cambiar mi script de la siguiente manera:

El nuevo script PHP:

//writecookie.php
setcookie(

Para CONFIGURAR cookies, puede cambiar mi script de la siguiente manera:

El nuevo script PHP:

function buttonClickOrAnything()
{
  var refreshObject = new XMLHttpRequest();
  if (!refreshObject)
  {
    //IE6 or older
    try
    {
      refreshObject = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      try
      {
        refreshObject = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e)
      {
        return;
      }
    }
  }
  refreshObject.open("GET", "http://www.first.com/writecookie.php?c=cookiename&v=cookievalue");
  refreshObject.send();
}

Y el JavaScript:

<*>

Eso debería funcionar en todos los navegadores.

GET['c'],

Para CONFIGURAR cookies, puede cambiar mi script de la siguiente manera:

El nuevo script PHP:

<*>

Y el JavaScript:

<*>

Eso debería funcionar en todos los navegadores.

GET['v']);

Y el JavaScript:

<*>

Eso debería funcionar en todos los navegadores.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top