vue中關(guān)于proxy的理解

問題

我們本地調(diào)試一般都是 npm run serve,然后打開 本機(jī)ip:8080(localhost:8080)對吧,這時候我們要調(diào)接口調(diào)試,后端的接口的地址可能在測試環(huán)境,也可能是自己電腦的 ip,總之不是你的 lcoalhost:8080,那么你調(diào)接口就會產(chǎn)生跨域,那么怎么辦呢?就需要proxy出場了

復(fù)習(xí)一下跨域的解決方案

  • jsonp
  • cors
  • Node中間件代理(兩次跨域)
  • nginx反向代理
    CORS支持所有類型的HTTP請求,是跨域HTTP請求的根本解決方案
    JSONP只支持GET請求,JSONP的優(yōu)勢在于支持老式瀏覽器,以及可以向不支持CORS的網(wǎng)站請求數(shù)據(jù)。
    不管是Node中間件代理還是nginx反向代理,主要是通過同源策略對服務(wù)器不加限制。
    日常工作中,用得比較多的跨域方案是cors和nginx反向代理

原理

vue 中的 proxy 就是利用了 Node 代理,原理還是因?yàn)榉?wù)器端沒有跨域這一說嘛,也是用了這么一個插件 地址

核心配置

1、你要 http://e.dxy.net/api/test 你可以在本地調(diào) localhost:8080/api/test,如axios.get('/api/test')

localhost:8080/api/test -> http://e.dxy.net/api/test
localhost:8080/bcma/api/test -> http://e.dxy.net/bcma/api/test

//vue-cli3.0 里面的 vue.config.js做配置
devServer: {
  proxy: {
      '/api': {
          target: 'http://e.dxy.net',  // 后臺接口域名
          ws: true,        //如果要代理 websockets,配置這個參數(shù)
          secure: false,  // 如果是https接口,需要配置這個參數(shù)
          changeOrigin: true,  //是否跨域
      }
  }
}

2、當(dāng)你調(diào)接口后端的命名沒有統(tǒng)一給接口前加 /api 這類的標(biāo)識,那么你可以自己加,也就是你可以在本地調(diào) localhost:8080/api/test,如axios.get('/api/test'),而你要的目標(biāo)接口是 http://e.dxy.net/test,你就可以用 pathRewrite,遇到 /api 就去找代理 http://e.dxy.net 并且把 /api 重寫為 /

localhost:8080/api/test -> http://e.dxy.net/test

//vue-cli3.0 里面的 vue.config.js做配置
devServer: {
  proxy: {
      '/api': {
          target: 'http://e.dxy.net',  // 后臺接口域名
          ws: true,        //如果要代理 websockets,配置這個參數(shù)
          secure: false,  // 如果是https接口,需要配置這個參數(shù)
          changeOrigin: true,  //是否跨域
          pathRewrite:{
              '^/api': '/'
          }
      }
  }
}

3、這個是對所有的接口都代理的,不止是檢測到 /api 的接口,比如:

localhost:8080/api/test -> http://e.dxy.net/api/test
localhost:8080/test -> http://e.dxy.net/test

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

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

  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong閱讀 22,970評論 1 92
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評論 19 139
  • 一篇關(guān)于跨域文章 寫在前面 嗯。又來了,又說到跨域了,這是一個老生常談的話題,以前我覺得這種基礎(chǔ)文章沒有什么好寫的...
    變異寶寶閱讀 1,353評論 1 1
  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript實(shí)...
    他方l閱讀 1,143評論 0 2
  • 入職新公司以來,第一個月接手vue項(xiàng)目,第二個月接手angularjs項(xiàng)目,第三個月加入react重構(gòu)項(xiàng)目。心生感...
    趁你還年輕233閱讀 11,857評論 2 8

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