2010年1月21日 星期四

Cross-Domain Communication

由於XMLHttpRequest-based的通訊模式有著安全性的限制, 使得不同網域之間無法進行資訊的傳輸, 當然在實做上還是有很多迂迴的解決方式, 比如說facebook connect利用Iframe建立一傳輸的通道, 再透過此通道將資料往上傳, 有關以iframe來溝通也可參考這篇, 而Yahoo!則利用JSONP做為Web Service的資料交換,

舉例來說, 當foo.com想與bar.com進行資料交換時, 我們可以在foo的主機上加入bar上的script以取得bar的資料,
<html>
<head>
<title>Cross-Domain Communication with JSON</title>
</head>
</body>
<script type="text/javascript">
function call_bar(obj) {
 alert(obj.name);
}
</script>
<script type="text/javascript" 
src="http://bar.com/?callback=call_bar"></script>
<body></body>
</html>    
  
而在bar上的script中則提供JSON格式的資料內容, 其中call_bar為callback function的名稱, 此callback將會在foo讀取到script的內容時回呼, 並且無法控制執行順序,
call_bar({"name":"bar"})
  
透過以上例子, 將能進行跨網域的資料交換, 參考資料: