解決Ajax不能跨域的方法

shirleyYing發表於2016-12-29

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) 在回撥函式中處理返回資料

相關文章