什么是跨域,如果本地開發遇到跨域怎么解決


跨域是瀏覽器的同源策略造成的,瀏覽器為了自身的安全功能,協議、域名、端口有一個不一致,就不允許跨域請求資源

1.前端跨域拿數據方法(具體實現自行搜搜)

https://segmentfault.com/a/1190000020686142?utm_source=tag-newest

(1)document.domain+iframe(主域相同,子域不同)

        強制設置document.domain為基礎主域,實現了同域

(2)location.hash+iframe(通過中間頁c來實現,利用iframe的location.hash傳值)

   

(3)window.name+iframe(通過iframe的src屬性從外域轉向本域,跨域數據就從iframe的外域window.name轉向本地域)

 

(4)window.postmessage

 2.跨域請求

(1)Jsonp(只能get請求)

 var script=doucument.createElement(‘script’)

   script.type=’text/javascript’

 script.src=”http://www.domain2.com:8080/login?userName=admin&callback=handleCallback”

 document.head.appendChild(script)

      //定義全局的回調函數

   function handleCallback(res){

       alert(JSON.stringify(res))

   }

 

(2)跨域資源共享CORS

         普通請求,前端不需要設置

         帶cookie請求,xhr.withCredentials=true

(3)nginx代理跨域(起一個代理服務器)

(4)nodejs中間件代理跨域

         node+express+http-proxy-middleware搭建一個proxy服務器

         node+webpack+webpack-dev-server設置proxy參數

(5)webSocket協議跨域(HTML5的一種新的協議,實現了瀏覽器與服務器的全雙工通信,socket.io)

 

3.本地開發跨域怎么解決

(1)webpack-dev-server中設置代理proxy的target和changeOrigoin

(2)express+http-proxy-middleware


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM