PHP實現跨域的幾種形式php
一、JSONP(JSON with padding)原理html
利用html裏面script標籤能夠加載其餘域下的js這一特性,使用script src的形式來獲取其餘域下的數據,可是,由於是經過標籤引入的,因此,會將請求到的JSON格式的數據做爲js去運行處理,顯然這樣運行是不行的。前端
所以,就須要提早將返回的數據包裝一下,封裝成函數進行運行處理,函數名經過接口傳參的方式傳給後臺,後臺解析到函數名後在原始數據上包裹這個函數名,發送給前端。(JSONP 須要對應接口的後端的配合才能實現) ajax
實例:json
當script src請求到達後端後,後端會去解析callback這個參數,獲取到字符串showData,在發送數據後端返回數據,用showData封裝一下,即showData({"json數據"}) ,前端script標籤在加載數據後,會把json數據做爲showData的參數,調用函數運行。後端
二、CORS跨域
CORS全稱是跨域資源共享(Cross-Origin Resource Sharing),是一種 ajax 跨域請求資源的方式,支持現代瀏覽器,IE支持10以上。瀏覽器
實現方式:函數
當使用XMLHttpRequest發送請求時,瀏覽器發現該請求不符合同源策略,會給該請求加一個請求頭:Origin,後臺進行一系列處理,若是肯定接受請求,則在返回結果中加入一個響應頭:Access-Control-Allow-Origin;瀏覽器判斷該相應頭中,是否包含Origin的值,若是有,則瀏覽器會處理響應,咱們就能夠拿到響應數據,若是不包含,瀏覽器直接駁回,這時,咱們沒法拿到響應數據。post
實例:
server.js
index.html
三、postMessage
假設有兩個域名(主域域名不一致),其中iframe頁面是容許訪問調用,那麼就能夠用postMessage實現。
原理:a域名發送請求postMessage,b域名間聽到了message事件,就處理並返回數據
以上內容僅供參考!上就是php跨域的幾種方式的詳細內容,更多請關注php交流羣:點擊加羣