使用JSONP徹底解決Ajax跨域訪問Cookie Session的方案


最近做開發時要把圖片文件放到另外一台服務器上(另外一個域名),因為這樣分布式存放,網站打開速度會快很多。而我采用AJAX獲取圖片服務器上某用戶的圖片時遇到了問題,按照通常的方式無法獲取信息,得到的Cookie都是null,后來想到瀏覽器出於安全考慮JavaScript和iframe不能跨域訪問,那我們就要考慮使用其他途徑來完成了,搗鼓了2天終於找到了解決方案,我使用JSONP來解決,請看。

JS代碼:

 

  1. $.ajax({ 

  2.     type: "get", 

  3.     url: "http://www.oicqzone.com/userogin.aspx?jsoncallback=?",    //這里必須使用?jsoncallback=?,否則一樣無法獲取。 

  4.     data: { "name": name, "pass": pass },                           //這里是參數,可以不用 

  5.     dataType: "jsonp",                                              //這個一定要,如果沒有你永遠無法獲取信息 

  6.     success: function(json){ 

  7.         var obj = eval( json );                                     //這個也是必備,由於我們用JSONP對象返回,所以不需的 

  8.         //這里就是分解具體元素了,可以按照自己的需求設置好JSONP對象。 

  9.         alert("success JSON Data:" + obj.usrName + " usrId:" + obj.usrId + " rndPassWord:" + obj.rndPassWord); 

  10.     } 

  11. }); 

 

 

ASP.NET代碼:

 

 

  1. //注意JSON對象和值都必須使用雙引號抱着,要不JS無法獲得對象 

  2. string strJson = Request.QueryString["jsoncallback"] + 

  3.         string.Format( "({{\"usrId\" : \"{1}\",\"usrName\" : \"{0}\",\"rndPassWord\" : \"{2}\"}})", 

  4.         Accounts.UserEntity.UserId, Accounts.UserEntity.UserName, Accounts.UserEntity.Password ); 

  5.          context.Response.AddHeader("Access-Control-Allow-Origin", "*");

  6. Response.Write( strJson ); 


免責聲明!

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



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