Ajax跨域問題有三種解決方案


1.通過中間過渡層解決跨域問題
 
1)通過Web代理服務器將不同域的應用統一通過代理服務器進行隔離,所有的應用都在一個域名下面了。(比如apache,nginx等) 


(2)跨域的安全限制都是指瀏覽器端來說的.服務器端是不存在跨域安全限制的,所以通過本機服務器端通過類似httpclient方式完成“跨域訪問”的工作。 
2.通過<script>標籤解決跨域問題 
注意:凡是擁有"src"這個屬性的標籤都擁有跨域的能力,比如<script>、<img>、<iframe> 
示例: 
前臺腳本: 
Java代碼 

Java代碼  收藏代碼

  1. <script type="text/javascript">    

  2.     var flightHandler = function(data){    

  3.         alert('你查詢的航班結果是:票價 ' + data.price + ' 元,' + '餘票 ' + data.tickets + ' 張。');    

  4.     };    

  5.         

  6.     var url = "http://abc.com:8080/AjaxCrossDomain/data/data.jsp?code=CA1998&callback=flightHandler";    

  7.        

  8.     var script = document.createElement('script');    

  9.     script.setAttribute('src', url);    

  10.         

  11.     document.getElementsByTagName('head')[0].appendChild(script);     

  12. </script>    


後臺data.jsp內容: 

Java代碼  收藏代碼

  1. <%@ page language="java" pageEncoding="UTF-8"%>    

  2. <%    

  3. String callback = request.getParameter("callback");    

  4.     

  5. StringBuilder builder = new StringBuilder();    

  6. builder.append(callback).append("({").append("\"code\": \"CA1998\",").append("\"price\": 1780,").append("\"tickets\": 5").append("});");    

  7.     out.println(builder.toString());    

  8. %>    


使用jquery的jsonp來實現跨域訪問,例子如下: 

Java代碼  收藏代碼

  1. <script type="text/javascript">    

  2.      $(function(){    

  3.         $.ajax({    

  4.              type: "get",    

  5.              async: false,    

  6.              url: "http://abc.com:8080/AjaxCrossDomain/jsonp/data.jsp",    

  7.              dataType: "jsonp",    

  8.              jsonp: "callback",    

  9.              jsonpCallback:"flightHandler",    

  10.              success: function(json){    

  11.                  alert('您查詢到航班信息:票價: ' + json.price + ' 元,餘票: ' + json.tickets + ' 張。');    

  12.              },    

  13.              error: function(){    

  14.                  alert('fail');    

  15.              }    

  16.          });    

  17.      });    

  18.          

  19.      </script>  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章