PHP實現跨域的幾種形式

2021-09-27 10:47:13 字數 1521 閱讀 6555

php實現跨域的幾種形式

1、jsonp(json with padding)原理

利用html裡面script標籤可以載入其他域下的js這一特性,使用script src的形式來獲取其他域下的資料,但是,因為是通過標籤引入的,

所以,會將請求到的json格式的資料作為js去執行處理,顯然這樣執行是不行的。

因此,就需要提前將返回的資料報裝一下,封裝成函式進行執行處理,函式名通過介面傳參的方式傳給後台,後台解析到函式名後在原始

資料上包裹這個函式名,傳送給前端。(jsonp 需要對應介面的後端的配合才能實現)

例項:

當script src請求到達後端後,後端會去解析callback這個引數,獲取到字串showdata,在傳送資料後端返回資料,用showdata封裝一下,即showdata() ,前端script標籤在載入資料後,會把json資料作為showdata的引數,呼叫函式執行。

2、cors

cors全稱是跨域資源共享(cross-origin resource sharing),是一種 ajax 跨域請求資源的方式,支援現代瀏覽器,ie支援10以上。

實現方式:

當使用xmlhttprequest傳送請求時,瀏覽器發現該請求不符合同源策略,會給該請求加乙個請求頭:origin,後台進行一系列處理,如果確定接受請求,則在返回結果中加入乙個響應頭:access-control-allow-origin;瀏覽器判斷該相應頭中,是否包含origin的值,如果有,則瀏覽器會處理響應,我們就可以拿到響應資料,如果不包含,瀏覽器直接駁回,這時,我們無法拿到響應資料。

例項:

3、postmessage假設有兩個網域名稱(主域網域名稱不一致),其中iframe頁面是允許訪問呼叫,那麼就可以用postmessage實現。

原理:a網域名稱傳送請求postmessage,b網域名稱間聽到了message事件,就處理並返回資料。

//b網域名稱

跨域的幾種實現方式

jsonp ajax error function 伺服器設定響應頭,允許跨域 一般不建議這樣做 res.header access control allow origin 伺服器 伺服器與伺服器之間沒有跨域問題.可以讓本機伺服器作為 來請求第三方伺服器,然後將第三方伺服器資料返回回來,但是不會攜...

iframe跨域問題 跨域的幾種實現方式

一 背景同源策略 同源策略可以理解為瀏覽器的一種安全機制,瀏覽器只允許與本域下的介面進行互動。不同源的客戶端在沒有明確授權的情況下,不能讀寫服務端的資源。什麼是不同源呢 補充點 在出現跨域問題時,瀏覽器究竟在哪一步進行了攔截?客戶端請求時?伺服器不做出響應?還是伺服器響應後瀏覽器拒絕的響應?測試發現...

PHP跨域上傳的幾種方法

方法一 網域名稱 http attachments.zxsv.com 資料夾 home web attachments 虛擬二級目錄到 home web zxsv 下 支援同區域網的伺服器 即網域名稱為http zxsv.com attachments 這樣多個子網域名稱進行上傳的設計時,只需要at...