2014-02-13 142 views
0

我有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> 
+0

你不需要cookies,你需要postMessage()。或者即使你需要cookies,你仍然需要postMessage()...如果你需要IE6 + 7支持(gasp),你可以使用window.name技巧。 – dandavis

+0

@dandavis - 我试过postMessage()。它遭受同样的问题。它没有传递来自cookie的数据。 – Dexter

+0

好吧,但这与JS无关,因为所有JS看到的都是字符串... – dandavis

回答

0

与xdomain而不是解决了这个:https://github.com/jpillora/xdomain

易于实施和解决跨域数据的问题。远非完美,但直到CORS得到更好的支持,旧版本的浏览器不再使用,它​​才起作用。

+0

有这么几个人使用easyXDM。你可以看看http://stackoverflow.com/questions/27203172/easyxdm-download-files-from-3rd-party-service吗? –