關於跨域大概可以分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;
}