Ajaxadr ajax跨域請求crossdomain


最近工作需要用到ajax跨域請求參數,網上找很很久,最終得到解決之道。分享一下吧,希望能幫到各位 

也許你已經發現在瀏覽器直接敲路徑能獲得對方提供接口的參數,而一到項目中Ajax請求卻老是失敗。原因是,瀏覽器出於安全考慮,是不允許JavaScript代碼進行跨域操作。 
話不多說,直入正題: 
據我所知,解決ajax跨域請求問題有3種, 

1).直接用一個java類向跨域項目請求參數,然后Ajax只想自己項目的對應java類發送請求。 
你想到了嗎 ? 呵呵 
這個夠簡單了,而且可以實現,但是這樣做的我們自己也會覺得這樣的方式怪“慫”的。 
相面看第二中方法 

2). 
這中方式主要是通過JS和Java類的一個配合,條件是提供接口方必須與請求方關系緊密,要不人家可願意為了你的需求來改動接口類 
JS方面: 

Js代碼   收藏代碼
  1. $.getJSON("http://www.forwhat.com?jsoncallback=?",  
  2.         function(data){  
  3.         alert(data);  
  4.         });  
  5.     



Java Code: 

Java代碼   收藏代碼
  1. String jsoncallback=request.getParameter("jsoncallback");  
  2. //與請求中jsoncallback對應  
  3. ...  
  4. out.print(jsoncallback+"("+  
  5.                 "Message"  
  6.           +")");  


正種方式的關鍵在於如下: 
      1、請求地址加參數:jsoncallback=? 

      2、服務器段把jsoncallback的值作為方法名傳回來,如JQUET098788(...) 


3). 
第三種方式 
AJAXCDR:利用 Flash 完美解決 JavaScript 和 AJAX 跨域 HTTP POST/GET表單請求 
這種方式比較強大,即不用懂java類也不需要對象的配合。 
這種方式瀏覽器兼容性好,支持IE、Firefox、谷歌Chrome等多種瀏覽器。 

條件是需要其他域的根目錄下有一個crossdomain.xml文件,文件中設置允許所有域名或允許本域訪問即可。 
crossdomain.xml 文件為:http://api.bz/crossdomain.xml,不需要改動。 
AJAXCDR下載地址: http://blog.s135.com/demo/ajaxcdr/ajaxcdr-1.0.zip   
AJAXCDR 擁有兩個文件:ajaxcdr.js 和 ajaxcdr.swf,下載后需要在ajaxcdr.js中配置ajaxcdr.swf的路徑,不詳說了,相信這個難不倒你。 
AJAXCDR 擁有一個 JavaScript 函數 AjaxCrossDomainRequest() 和一個全局變量 AjaxCrossDomainResponse。 
下面是我的例子 

Java代碼   收藏代碼
  1. <form name="cross_domain_demo">       
  2. <input name="title" type="text" value="">    
  3. </form>         
  4. <a href="javascript:AjaxCrossDomainRequest('"http://www.forwhat.com', 'POST', 'cross_domain_demo', 'callbacktome()');">Submit</a>    
  5.     
  6. <script type="text/javascript">       
  7. function callbacktome(){       
  8.     alert(AjaxCrossDomainResponse);       
  9. }       
  10. </script>       
  11.     
  12. <script type="text/javascript" src="/demo/ajaxcdr/ajaxcdr.js"></script>   


這種方式看起來大費周折,但是如果跨域情況多的話,可以采用。很不錯的 。 
第一篇技術性文章,如有不妥之處,希望大蝦們能慷慨指出 。 


免責聲明!

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



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