以前要進行跨網域的 AJAX 請求,可以
- 用 JSONP
- 在 A 網域的伺服器端,先寫一支中介程式(也有人說是 proxy 程式),由中介程式去向 B 網域抓資料。A 網域的 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';
[備註]
- 一些常見 server 端 Access-Control-Allow-Origin 的 headers 增加方法
(例如:Apache、IIS、ASP.NET、PHP...)
http://enable-cors.org/server.html - 常見瀏覽器對 CORS 的支援程度
http://enable-cors.org/client.html
沒有留言:
張貼留言