1. 程式人生 > >web應用之跨域問題

web應用之跨域問題

跨域是前端同學繞不過的一個問題,面試必問,日常開發也常常遇到。

今天就來簡單聊聊這個問題。

首先,什麼是跨域?

跨域是指瀏覽器針對javascript所作的同源策略限制。

為什麼要設定跨域?

基於安全形度考慮。

日常開發中,為什麼又需要跨域呢?

涉及到跟不同域進行資料互動,像跟前端的資料互動,跟後端的資料互動,特別是在前後端分離,微服務的時代,跨域更是無處不在,那應該怎麼處理這些跨域問題呢?

我們將其分為兩類:1)純前端的跨域 2)前端與後端的跨域

純前端的跨域:

  1. window.name
  2. document.domain + iframe (主域相同,子域不同)
  3. postMessage + iframe
  4. location.hash + iframe

前端與後端的跨域:

  1. jsonp
  2. cors(跨域資源共享)
  3. nginx代理(vue中的反向代理)
  4. nodejs中介軟體代理
  5. websocket協議代理

在開發中用到的有window.name, postMessage + iframe, jsonp, cors, nginx等跨域方式

順手再提一問:為什麼後端沒有跨域限制?
因為跨域是瀏覽器對js作的限制,而後端沒有這個限制,所以不存在跨域問題。所以一般是通過cors,讓後端去別的伺服器上拿到資料,再跟前端進行資料互動。