2013年4月16日 星期二

使用 CORS 進行跨網域請求

CROS (Cross-origin resource sharing) 跨來源資源共享,可讓  A 網域向 B 網域發出跨網域的 AJAX 請求。
以前要進行跨網域的 AJAX 請求,可以
  1. 用 JSONP
  2. 在 A 網域的伺服器端,先寫一支中介程式(也有人說是 proxy 程式),由中介程式去向 B 網域抓資料。A 網域的 AJAX 則向這支中介程式發出請求。
 以上這兩種方法都可以達到跨網域的 AJAX 效果,但較麻煩。

CORS 則只須在伺服端器端設定 Access-Control-Allow-Origin 標頭,且瀏覽器有支援 CROS ,即可達到跨網域的 AJAX 請求。

[PHP 範例] http://aa.example.com 向 http://bb.example.com/test.php 發出 AJAX 請求

http://aa.example.com 寫法跟一般 AJAX 一樣
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$.get("http://bb.example.com/test.php", function(data) {
    alert(data);
});
</script>

http://bb.example.com/test.php 新增 Access-Control-Allow-Origin 的存取權限header
//header("Access-Control-Allow-Origin: *"); //允許所有網域都可存取
header("Access-Control-Allow-Origin: http://aa.example.com"); //僅允許http://aa.example.com網域存取
echo 'test';

[備註]

沒有留言:

張貼留言