1.跨域的含義:
既然有人造這個詞,個人還是喜歡先從字面意思去解釋,“跨域”理解跨域不同領域,在我們IT這“域”理解爲領域,平臺,應用,資源,意爲跨域不同的領域,不同的機器,不同的平臺獲取資源。(有些資源不存在跨域,例如靜態資源)
2.產生跨域的條件:
①.xhr請求 (全稱 XMLHttpRequest 是一個與後臺進行數據交互的前端對象,基於Http協議,支持同步和異步請求方式)
②非同源策略,域名+端口+協議(http,https)三者不一致都會產生跨域。
3.解決跨域:
①.設置代理。
②.服務器設置rsp.setHeader("Access-Control-Allow-Origin", "*");
4.跨域爲什麼在數據返回的時候採取判斷是否是同源呢?而不是在請求的時候進行判斷是不是同源?
原因:跨域請求,如果服務端在響應頭中設置了可以跨域權限,則瀏覽器則不是攔截響應數據
附上跨域瀏覽器和服務端交互的原理:
①.瀏覽器先根據同源策略對前端頁面和後臺交互地址做匹配,若同源,則直接發送數據請求;若不同源,則發送跨域請求。
②.服務器解析程序收到瀏覽器跨域請求後,根據自身配置返回對應文件頭。若未配置過任何允許跨域,則文件頭裏不包含Access-Control-Allow-origin字段,若配置過域名,則返回Access-Control-Allow-origin+ 對應配置規則裏的域名的方式。
③.瀏覽器根據接受到的http文件頭裏的Access-Control-Allow-origin字段做匹配,若無該字段,說明不允許跨域;若有該字段,則對字段內容和當前域名做比對,如果同源,則說明可以跨域,瀏覽器發送該請求;若不同源,則說明該域名不可跨域,不發送請求