首先要瞭解何為跨域,(協議、功能變數名稱、埠任意一個不同)的web資源。如何解決跨域:1,jsonp 它只支持GET請求而不支持POST等其它類型的HTTP請求;例如angular 中,如下使用,$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'c ...
首先要瞭解何為跨域,(協議、功能變數名稱、埠任意一個不同)的web資源。
如何解決跨域:
1,jsonp 它只支持GET請求而不支持POST等其它類型的HTTP請求;
例如angular 中,
如下使用,$http.jsonp('some/trusted/url', {jsonpCallbackParam: 'callback'})
2,HTML5中window.postMessage,在兩個頁面之間的數據傳遞,不適用於客戶端和服務端的通信;
3,通過修改document.domain來跨子域,需要對兩個頁面設置document.domain;
4,通過設置window.name的方式,比如:www.example.com/a.html 想訪問www.cnblogs.com/data.html的內容
則需要在 data頁面中設置window.name = "a.html頁面想要獲取的數據";
在a.html中寫:
寫一個iframe
<iframe id = "proxy" src="http://www.cnblogs.com/data.html" style="display:none" onload = "getData()"></iframe>
<script>
function getData(){
var iframe=document.getElementById("proxy");
iframe.onload = function(){
var data = iframe.contentWindow.name;
alert(data);
}
}
</script>
總結來說,第一種方式,只適用於get請求;
第二三四種方式,則需要兩個通信的頁面同時操作。