關(guān)于解決項(xiàng)目中的跨域問題

筆者目前主要使用Vue進(jìn)行項(xiàng)目開發(fā),但是我認(rèn)為技術(shù)棧不重要,js才是最重要的,當(dāng)時(shí)css優(yōu)秀也是一名優(yōu)秀的前端小開發(fā)(咳咳),下邊步入正題啦

一、跨文檔通信API

嘮嗑:我認(rèn)為還是比較常常使用的 尤其是對(duì)于項(xiàng)目嵌入iframe和open簡(jiǎn)直不要太好用,哈哈哈哈,咳咳,寫文章呢,嚴(yán)肅點(diǎn)

(1) 使用vue-router(push)跳轉(zhuǎn)如何使用(這個(gè)其實(shí)不能算作跨域)
父頁(yè)面
     //父頁(yè)面添加message監(jiān)聽子頁(yè)面發(fā)送來(lái)的消息
     window.addEventListener('message', function (e) {
           //自己打印出來(lái)e就可以具體都有哪些值了
           //我比較常用的就是 e.data = {msg:"你好哇"}
     }, false);
子頁(yè)面
      //子頁(yè)面使用postMessage發(fā)送數(shù)據(jù)給父頁(yè)面進(jìn)行相關(guān)的判斷
      window.parent.postMessage({
               msg:"你好哇"
      }, '*');
(2) 使用open打開子頁(yè)面
      const openChildWindow = window.open('http://**.**.**.**:8080/#/mypage');
      //需要在加載成功后在發(fā)送消息 此時(shí)子頁(yè)面已經(jīng)綁定好監(jiān)聽事件了呢,不然可能會(huì)接收不到
      openChildWindow.onload = () => {
             openChildWindow.postMessage('hello word', 'http://**.**.**.**:8080/')
      }
(3) iframe

嘮嗑:主要使用的是獲取嵌套的iframe的dom- 然后通過(guò)contentWindow進(jìn)行postMessage發(fā)送消息-監(jiān)聽message接收消息

  var myframe = document.getElementById('myframe');
 myframe.contentWindow.postMessage({data:'parent'}, 'http://localhost:8081');

二、jsonp

jsonp是利用資源不跨域的特性,使用的是script標(biāo)簽的src屬性,因此只能get請(qǐng)求

三、前端不做修改-需要服務(wù)端配置頭部等

      Access-Control-Allow-Origin: *
      //代表服務(wù)器同意把Cookie發(fā)到服務(wù)器
      Access-Control-Allow-Credentials: true 還要給ajax請(qǐng)求設(shè)置withCredentials=true

四、vue框架跨域

本地聯(lián)調(diào)階段使用-在vue.config.js中-devServer進(jìn)行代理配置 (webpack配置)

五、nginx進(jìn)行代理配置-不太了解就不過(guò)多說(shuō)明了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容