跨域:掘金地址——https://juejin.im/post/58e8c932ac502e4957bde78bhtml
另外一篇學習地址:http://www.cnblogs.com/chopper/archive/2012/03/24/2403945.html前端
講的比較細:http://www.cnblogs.com/kenshinobiy/p/6265197.html
跨域筆記
有些東西不要太較真,由於沒啥用
jsonp和cors知道就好,其餘的瞭解一下就好
同源:是指同域名(主域名與二級域名,即子域名),同協議,同端口。是瀏覽器的一種最核心最基本的安全策略。jquery
1."同源策略",即同域名(domain或ip)、同端口、同協議的才能互相獲取資源,而不能訪問其餘域的資源。ajax
2.jsonp跨域方式,就是利用script的src來變相發送get請求,在連接裏會發送一個函數名,而json數據做爲
函數的參數被回調函數傳遞過來再解析應用。json
//據研究:<script>、<a>、<img>、<iframe>等標籤能夠實現跨域,由於有src(a的href),能夠獲取外域的信息,src屬性不受同源策略的限制,能夠獲取任何服務器上的腳本並執行。
3.jsonp用jq實現,有兩個方法:$.getJSON 和 $.ajax
//callback後面的?會由jquery自動生成方法名
$.getJSON('http://www.b.com/getdata?callback=?',function(data){
console.log(data.msg);
});
還有一種更經常使用的是:$.ajax,只要制定datatype爲jsonp便可:
$.ajax({
url: 'http://www.b.com/getdata?callback=?',//不指定回調名,可省略callback參數,會由jquery自動生成
dataType:‘jsonp’,
jsonpCallback:‘demo’,//可省略
success:function(data){
console.log(data.msg);//msg是json數據中的一個name。之後能夠是任何其餘
}
});
4.jsonp缺點:
·沒有關於調用錯誤的處理函數,失敗會以瀏覽器默認方式處理
·只支持get請求。所以安全性不高
5.json優勢:支持老瀏覽器兼容,ie8如下也能夠。
6.CORS方式,針對高級瀏覽器。
經過修改document.domain爲基礎域名的方式來進行通訊,但要注意協議和端口也必須相同、
7.每一個iframe都有包裹他的window對象,而這個window是最外層窗口的子對象,因此,window.name屬性就能夠被共享。
8.CORS:跨域資源共享,w3c標準,支持兼容ie8,(IE8和IE9須要使用XDomainRequest對象來支持CORS)。主流的跨域解決方案
9.CORS的核心思想是經過一系列新增的HTTP頭信息來實現服務器和客戶端之間的通訊。【因此,須要服務端作好相應配置來配合前端】
10.Origin頭部:包含 請求頁面的源信息(協議、域名和端口)。做用是讓服務器根據這個頭部信息來決定是否給予響應。
11.Access-Control-Allow-Origin:請求能夠接受時:服務器就會返回信息,在其頭部中:發相同的對應的源信息(若是是公共資源,就發*。大部分狀況,你們都喜歡直接寫成*返回,*表示任意外域資源均可以訪問,但這樣安全性不高。)
12.若是沒有頭部,或頭部信息源不匹配,就會返回錯誤駁回請求。
13.請求和響應都不包含cookie信息跨域