跨域:掘金位址——https://juejin.im/post/58e8c932ac502e4957bde78b
另一篇學習位址:http://www.cnblogs.com/chopper/archive/2012/03/24/2403945.html
講的比較細:http://www.cnblogs.com/kenshinobiy/p/6265197.html
跨域筆記
有些東西不要太較真,因為沒啥用
jsonp和cors知道就好,其他的了解一下就好
同源:是指同域名(主域名與二級域名,即子域名),同協定,同端口。是浏覽器的一種最核心最基本的安全政策。
1."同源政策",即同域名(domain或ip)、同端口、同協定的才能互相擷取資源,而不能通路其他域的資源。

2.jsonp跨域方式,就是利用script的src來變相發送get請求,在連結裡會發送一個函數名,而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資訊