使用easyxdm读取跨域Cookie数据



我有两个域-domain1.com和domain2.com,其中domain1.com是我的父站点,domain2.com是子站点。我正在domain1.com上设置cookie,但domain2.com需要访问这些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>

改为使用xdomain解决此问题:https://github.com/jpillora/xdomain

易于实现,解决了跨域数据的问题。虽然远非完美,但直到CORS得到更好的支持,旧浏览器逐渐减少,它才起作用。

最新更新