我有两个域- 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>发布于 2014-08-20 14:44:32
用xdomain代替:https://github.com/jpillora/xdomain解决了这个问题
易于实现,解决了跨域数据的问题。这远非完美,但除非CORS得到更好的支持,旧的浏览器也不再出现,否则它是有效的。
https://stackoverflow.com/questions/21765890
复制相似问题