validar - obtener valor de una cookie javascript
Obteniendo cookies de configuraciĆ³n en diferentes dominios, con javascript u otro (3)
No he podido encontrar nada en particular sobre 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 de "primero .com "pero solo tengo acceso a JavaScript (puedo manipular el DOM como yo quiera) en" second.com ".
Mi primer enfoque fue crear un iframe en second.com (con js) que cargaba una página como "first.com/doAjax?setCookie=xxx" y que hacía una llamada ajax para decir "first.com/setCookie?cookieData=xxx "que establecería la cookie en" first.com "con los datos que transmitimos.
Eso funcionó bastante bien para configurar la cookie en first.com de second.com: para obtener una cookie, básicamente seguí el mismo procedimiento, creé el iframe que 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 cookie JSON a "second.com" para poder leerlo, bueno, tal vez podría traerlo cuando la llamada Ajax se complete usando "window.top", pero hay problemas de sincronización. porque no es relativo a cuándo se cargó el iframe. Espero que esté claro y me preguntaba si hay una solución más fácil en lugar de este loco iframe-> ajax, también parece que esto ni siquiera funcionará para obtener cookies en SAFARI.
Coloque este archivo PHP en first.com:
//readcookie.php
echo $_COOKIE[''cookiename''];
En second.com puede usar este javascript para obtener el valor:
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();
}
Saludos, Robert
Para CONFIGURAR las cookies puede cambiar mi script de la siguiente manera:
El nuevo PHP-Script:
//writecookie.php
setcookie($_GET[''c''], $_GET[''v'']);
Y el JavaScript:
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();
}
Eso debería funcionar en todos los navegadores.
Podría inyectar un elemento script en HEAD del documento con una devolución de llamada que pase la cookie que necesita a cualquier función que lo necesite.
Algo 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''});