我有2个域 - domain1.com和domain2.com - 其中domain1.com是我的父站点,domain2.com是子站点。我在domain1.com上设置了cookie,但domain2.com需要访问这些cookie。使用easyxdm读取跨域Cookie数据
我已经研究了一大堆关于这个问题 - JSONP,CORS,挑选任何东西。 EasyXDM似乎提供了一个很好的解决方案。 domain2.com和domain1.com之间的消息按预期工作,但某些浏览器(即Chrome和IE)未读取该cookie并因此传递空白数据。
Domain1.com有一个称为status.php具有下列数据页:
<?php
$guid = $_COOKIE['user_guid'];
?>
<!doctype html>
<html>
<head>
<title>easyXDM.Transport test</title>
<script type="text/javascript" src="/js/easyxdm/easyXDM.debug.js"></script>
</head>
<body>
<script>
var socket = new easyXDM.Socket({
onReady: function() {
socket.postMessage('<?php echo $guid; ?>');
}
});
</script>
</body>
</html>
Domain2.com具有下列设置,以从domain1.com收到消息:
var socket = new easyXDM.Socket({
remote: "http://domain1.com/status.php",
onMessage: function(message, origin)
{
alert("Received '" + message + "' from '" + origin + "'");
}
});
这像FireFox中的冠军一样工作,但Chrome和IE正在返回一个空字符串,而不是获取cookie数据。任何人都可以用这个方向将我推向正确的方向吗?我无法在这两个域上设置Cookie,我只需要能够通过任何必要的方式从第一个域中获取ID。谢谢!
正如意见中的要求,这里是为域2的全码:
<!doctype html>
<html>
<head>
<title>Domain 2</title>
<script type="text/javascript" src="/js/easyxdm/easyXDM.debug.js"></script>
</head>
<body>
<script>
var socket = new easyXDM.Socket({
remote: "http://domain1.com/status.php",
onMessage: function(message, origin)
{
alert("Received '" + message + "' from '" + origin + "'");
}
});
</script>
<p>Hello World!</p>
</body>
</html>
你不需要cookies,你需要postMessage()。或者即使你需要cookies,你仍然需要postMessage()...如果你需要IE6 + 7支持(gasp),你可以使用window.name技巧。 – dandavis
@dandavis - 我试过postMessage()。它遭受同样的问题。它没有传递来自cookie的数据。 – Dexter
好吧,但这与JS无关,因为所有JS看到的都是字符串... – dandavis