php 支援jsonp跨域請求

lanyu發表於2021-09-09

客戶端請求:


[html] view plaincopyprint?

 

 

 

 

New Document  

   

 

 

 


 


   

 

       

    aa
 

   

 


   

 

       var qsData = "123454";  

       $.ajax({  

           url: "",  

           type: "POST",  

           dataType: 'jsonp',  

           jsonp: 'callback',  

           data: qsData,  

           timeout: 2000,  

           success: function (json) {//客戶端jquery預先定義好的callback函式,成功獲取跨域伺服器上的json資料後,會動態執行這個callback函式  

               alert(json);  

           }  

       });  


     


 

 

伺服器端響應:

[php] view plaincopyprint?

//服務端返回JSON資料    

$arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);    

$result=json_encode($arr);    


//動態執行回撥函式    

$callback=$_GET['callback'];    

echo $callback."($result)";    


響應結果:

圖片描述


Jsonp優點:它不像XMLHttpRequest物件實現的Ajax請求那樣受到同源策略的限制;它的相容性更好,在更加古老的瀏覽器中都可以執行,不需要XMLHttpRequest或ActiveX的支援;並且在請求完畢後可以透過呼叫callback的方式回傳結果。


Jsonp缺點:JSONP不提供錯誤處理。如果動態插入的程式碼正常執行,你可以得到返回,但是如果失敗了,那麼什麼都不會發生。你無法獲得一個404的錯誤,也不能取消這個請求。另外一個重要的缺點是如果使用了不信任的服務會造成很大的安全隱患。它只支援GET請求而不支援POST等其它型別的HTTP請求;它只支援跨域HTTP請求這種情況,不能解決不同域的兩個頁面之間如何進行JavaScript呼叫的問題。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2035/viewspace-2802307/,如需轉載,請註明出處,否則將追究法律責任。

相關文章