1. Ajax不能跨域請求的原因
同源策略(Same Origin Policy),是一種約定,該約定阻止當前指令碼獲取或者操作另一個域下的內容。所有支援Javascript的瀏覽器都支援同源策略,也就是說瀏覽器可以隔離來自不同源的內容,阻止跨域請求的發生。
2. 解決方法
(1) CORS
在被請求的指令碼中使用header()函式設定http響應,從而使得跨域請求能夠發生:
header(“Access-Control-Allow-Origin:*”);
這一方法稱為CORS(Cross-Origin Resource Sharing),是w3c的工作草案。
(2) 使用Jsonp (Json with padding)
jsonp的原理是通過script標籤的src屬性來請求不同源的指令碼。
步驟:
1) 建立script標籤,設定src屬性
2) 定義回撥函式
3) 在被請求的php指令碼中執行回撥函式
4) 在回撥函式中處理返回資料