我有 2 个域 - 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>