天天看點

php跨域的幾種方式

php跨域的幾種方式

PHP實作跨域的幾種形式

1、JSONP(JSON with padding)原理

利用html裡面script标簽可以加載其他域下的js這一特性,使用script src的形式來擷取其他域下的資料,但是,因為是通過标簽引入的,是以,會将請求到的JSON格式的資料作為js去運作處理,顯然這樣運作是不行的。

是以,就需要提前将傳回的資料包裝一下,封裝成函數進行運作處理,函數名通過接口傳參的方式傳給背景,背景解析到函數名後在原始資料上包裹這個函數名,發送給前端。(JSONP 需要對應接口的後端的配合才能實作)php交流群:

link

執行個體:

php跨域的幾種方式

當script src請求到達後端後,後端會去解析callback這個參數,擷取到字元串showData,在發送資料後端傳回資料,用showData封裝一下,即showData({"json資料"}) ,前端script标簽在加載資料後,會把json資料作為showData的參數,調用函數運作。

2、CORS

CORS全稱是跨域資源共享(Cross-Origin Resource Sharing),是一種 ajax 跨域請求資源的方式,支援現代浏覽器,IE支援10以上。

實作方式:

當使用XMLHttpRequest發送請求時,浏覽器發現該請求不符合同源政策,會給該請求加一個請求頭:Origin,背景進行一系列處理,如果确定接受請求,則在傳回結果中加入一個響應頭:Access-Control-Allow-Origin;浏覽器判斷該相應頭中,是否包含Origin的值,如果有,則浏覽器會處理響應,我們就可以拿到響應資料,如果不包含,浏覽器直接駁回,這時,我們無法拿到響應資料。

server.js

php跨域的幾種方式

index.html

php跨域的幾種方式

3、postMessage

假設有兩個域名(主域域名不一緻),其中iframe頁面是允許通路調用,那麼就可以用postMessage實作。

原理:a域名發送請求postMessage,b域名間聽到了message事件,就處理并傳回資料

php跨域的幾種方式

以上内容僅供參考!上就是php跨域的幾種方式的詳細内容,更多請關注php交流群: