2014-02-13 73 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嗎? –