解決ajax跨域問題的多種方法


//第一種方法使用jsonp的方式

<script type="text/javascript" src="http://www.youxiaju.com/js/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(function(){ $.ajax( { type:'get', url : 'http://www.youxiaju.com/validate.php?loginuser=lee&loginpass=123456', dataType : 'jsonp', jsonp:"jsoncallback", success : function(data) { alert("用戶名:"+ data.user +" 密碼:"+ data.pass); }, error : function() { alert('fail'); } } ); }) </script>

  

<?php
header('Content-Type:text/html;Charset=utf-8');
$arr = array(
    "user" => $_GET['loginuser'],
    "pass" => $_GET['loginpass'],
    "name" => 'response'

);
echo $_GET['jsoncallback'] . "(".json_encode($arr).")";

  第二種方式增加headr頭

 假設我們頁面或者應用已在 http://www.test1.com 上了,而我們打算從 http://www.test2.com 請求提取數據。一般情況下,如果我們直接使用 AJAX 來請求將會失敗,瀏覽器也會返回“源不匹配”的錯誤," 跨域"也就以此由來。
  利用 CORS,http://www.test2.com 只需添加一個標頭,就可以允許來自 http://www.test1.com 的請求,下圖是我在PHP中的 hander() 設置, “*”號表示允許任何域向我們的服務端提交請求
     

  也可以設置指定的域名,如域名 http://www.test2.com ,那么就允許來自這個域名的請求

     
     
  當前我設置的header為“*”,任意一個請求過來之后服務端我們都可以進行處理&響應,那么在調試工具中可以看到其頭信息設置,其中見紅框中有一項信息是“ Access-Control-Allow-Origin:* ”,表示我們已經啟用CORS,如下圖。
  PS:由於demo都在我廠的兩台測試機間完成,外網也不能訪問,所以在這就不提供demo了,見諒
     
   簡單的一個header設置,一個支持跨域&POST請求的server就完成了:)
 
  當然,如果沒有開啟CORS必定失敗的啦,如下圖:
  

 


免責聲明!

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



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