跨域


關於跨域大概可以分iframe的跨域,和純粹的跨全域請求。

文地址:https://mp.weixin.qq.com/s?__biz=MjM5NzA1MTcyMA==&mid=403031230&idx=2&sn=7908ded106360a9c68cb98b02195487c&scene=1&srcid=0301ke14YYuBZlbfv3876gWq&key=710a5d99946419d9910a8cd82aae16da26b02eee7508ef038bb2e779aff191afcaad746e8b90a7055752d1640c1a504c&ascene=1&uin=MTEzMTQ4MzE4MA%3D%3D&devicetype=Windows-QQBrowser&version=61030003&pass_ticket=tcAw0djiR2lSXVb7OH%2Fqf927%2BU%2FXmuV3cfxKhAZK91CdjqeNjZuzTXdntokClCYS

關於跨域的可以去看園子裏的這幾篇文章:


  • JavaScript跨域總結與解決辦法(http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html)

  • 跨域-知識(http://www.cnblogs.com/scottckt/archive/2011/11/12/2246531.html)

  • 跨域資源共享的10種方式(http://www.cnblogs.com/cat3/archive/2011/06/15/2081559.html)


其實正統的跨全域的解決方法大致也就,JSONP,Access Control和服務器代理這麼三種

實例:


前端JavaScript跨域調用:
第一種方法

<script type="text/javascript" src="YourURL?jsonCallback=onLoaded"></script>
第二種方法

function onLoaded(jsonData) {
        //處理顯示jsonData內容
    }
    var url = "YourURL?jsonCallback=onLoaded&sth=" + sth;
    $.ajax({
        type: "get",
        url: url,
        dataType: "jsonp",
        //ajax 傳參的兩種方法:data: "orderId=" + orderId + "&commant=" + commant;
        //                    data: {"orderId":orderId,"commant":commant}, 
        callback: "onLoaded"
    });

後臺WebServer跨域調用api接口:

  public static string GetUrlResult(string URL) 
        {
            //C#利用System.Uri轉URL爲絕對地址
            Uri uri = new Uri(URL);
            //通過使用接受數據的資源(例如腳本或 ASP .NET 頁)的 URI 調用 Create,創建一個 WebRequest 實例。
            //詳細:https://msdn.microsoft.com/zh-cn/library/debx8sh9(VS.80).aspx
            WebRequest webReq = WebRequest.Create(uri);
            try
            {
                // 發送HttpWebRequest等待響應           
                // C#-using用法詳解: http://blog.csdn.net/wanderocn/article/details/6659811/
                using (HttpWebResponse webRes = (HttpWebResponse)webReq.GetResponse())
                {
                    //獲取與該響應相關的流
                    using (Stream respStream = webRes.GetResponseStream())
                    {
                        //讀取流
                        using (StreamReader objReader = new StreamReader(respStream, System.Text.Encoding.UTF8))
                        {
                            //ReadToEnd適用於小文件的讀取,一次性的返回整個文件
                            string strRes = objReader.ReadToEnd();
                            return strRes;
                        }
                    }
                }
            }
            catch (WebException)
            {
                return "";
            }
        }
 public static IList<Ext> Example()
        {
            string URL="http://www.baidu.com/xxx/xxx?id=1&password=111";
            string result=APIInterfaceUtil.GetUrlResult(URL);
            System.Web.Script.Serialization.JavaScriptSerializer json=new System.Web.Script.Serialization.JavaScriptSerializer();
            Ext o = json.Deserialize<Ext>(result);

            //反序列化Deserialize、 序列化Serialize
            //eg. User user = json.Deserialize<User>(jsonString)
            //    string jsonString = json.Serialize(user)

            Ext m = new Ext();
            if (o != null && o.Result == true)
            {
                IList<Ext> list = o.list;
                return list;
            }
            return null;
        }



發佈了27 篇原創文章 · 獲贊 4 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章