php跨域的幾種方式


 

PHP實現跨域的幾種形式

1、JSONP(JSON with padding)原理

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

因此,就需要提前將返回的數據包裝一下,封裝成函數進行運行處理,函數名通過接口傳參的方式傳給后台,后台解析到函數名后在原始數據上包裹這個函數名,發送給前端。(JSONP 需要對應接口的后端的配合才能實現) 

實例:

  

當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 

 

index.html

 

 

3、postMessage

假設有兩個域名(主域域名不一致),其中iframe頁面是允許訪問調用,那么就可以用postMessage實現。

原理:a域名發送請求postMessage,b域名間聽到了message事件,就處理並返回數據  

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM