Ajax請求一個目標地址為非本域(協議、域名、埠任意一個不同)的web資源,並根據響應獲得外部應用資料。比如我們用Ajax訪問城市天氣預報、IP地址等公共服務介面時,就涉及跨域了。我們請求一個外部服務時,瀏覽器會基於安全問題拒絕授權訪問。而script、script、iframe標籤的src屬性就不存在跨域的問題,所以Ajax跨域就是利用這一點以及js對JSON的支援,外部服務只要給Ajax的請求響應一段JS程式碼或JSON資料,就能被Ajax獲取到。
比如jquery的getScript
$.getScript("//pv.sohu.com/cityjson",function(){//前面加上http //這個服務給響應的js程式碼為 //returnCitySN = {cid: "110000", cip: "124.xxx.22.xxx", cname: "北京市"} //回撥函式執行前,外部服務給響應的js程式碼已被載入到本地,所以可以直接使用。 console.log("cid : " + returnCitySN.cid); console.log("cip : " + returnCitySN.cip); console.log("cname : " + returnCitySN.cname);});
Ajax請求一個目標地址為非本域(協議、域名、埠任意一個不同)的web資源,並根據響應獲得外部應用資料。比如我們用Ajax訪問城市天氣預報、IP地址等公共服務介面時,就涉及跨域了。我們請求一個外部服務時,瀏覽器會基於安全問題拒絕授權訪問。而script、script、iframe標籤的src屬性就不存在跨域的問題,所以Ajax跨域就是利用這一點以及js對JSON的支援,外部服務只要給Ajax的請求響應一段JS程式碼或JSON資料,就能被Ajax獲取到。
比如jquery的getScript
$.getScript("//pv.sohu.com/cityjson",function(){//前面加上http //這個服務給響應的js程式碼為 //returnCitySN = {cid: "110000", cip: "124.xxx.22.xxx", cname: "北京市"} //回撥函式執行前,外部服務給響應的js程式碼已被載入到本地,所以可以直接使用。 console.log("cid : " + returnCitySN.cid); console.log("cip : " + returnCitySN.cip); console.log("cname : " + returnCitySN.cname);});