1.爲啥出現跨域???前端
在制定Html規則時,爲了安全的考慮,一個源的腳本(網頁,網站)不能與另外一個源的資源進行交互,node
因此就引起一個詞叫作「同源策略」。nginx
同源策略:同源策略是一種約定,它是瀏覽器最核心的也最基本的安全功能,若是缺乏了同源策略,則面試
瀏覽器的正常功能可能會受到影響。後端
同源:所謂同源(即指在同一個域),就是兩個頁面具備相同的協議(protocol),主機(host)和端口號(port)跨域
2.啥是跨域???瀏覽器
當協議,主機,和端口號有一個不一樣時,就是跨域。安全
須要注意的是:默認的端口號是80
服務器
3.受限制的場景有哪些呢???(面試回答)post
1)Cookie,LocalStorage沒法讀取
2)DOM和js對象沒法讀取,主要是iframe(能夠說有iframe的對象沒法讀取)
3) Ajax請求不能發送
跨域報錯長這樣子:
4.解決跨域的方法???
對最主要的AJAX跨域來講(也就是日常調接口時):
1)(後端)服務器配置CORS(跨域資源共享)
2) (後端)node.js或nginx,反向代理,把跨域改形成同域
3)(前端)將JSON升級成JSONP,在JSON的基礎上,利用<script>標籤能夠跨域的特性,加上頭設置
對iframe跨域來講:
H5提供了postMessage()的方法,能夠在父子頁面進行通訊(加分項)