最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中proxy代理的用法(解決跨域問題)

 更新時間:2022年12月09日 15:03:05   作者:以誰未名  
這篇文章主要介紹了vue中的proxy代理的用法(解決跨域問題),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

聲明

1. 首先我們應(yīng)該知道

前端axios在本地發(fā)送的請求如果你不把路徑寫全,它都是會默認(rèn)加上自己項(xiàng)目所在的端口,就比如說:

axios.get('/login')

axios.get('/hello')

當(dāng)我點(diǎn)擊發(fā)送按鈕之后,以上兩行代碼實(shí)際為:

http://localhost:8080/login

http://localhost:8080/hello

其中 localhost:8080 就是自己項(xiàng)目所在的地址了。實(shí)際前端就會根據(jù)以上的地址來訪問后端程序了。

2. 跨域,什么是跨域呢?

首先,明白什么是同源策略?同源就是指 協(xié)議、域名、端口 都要相同,其中任何一個不同都會出現(xiàn)跨域。例如:

http://www.baidu.com:8000

// http 是協(xié)議

// www.baidu.com 是域名

// 8000 是端口

跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對JavaScript實(shí)施的安全限制。

這里說明一下,無法跨域是瀏覽器對于用戶安全的考慮。是瀏覽器的鍋。

同源策略限制了一下行為: Cookie、LocalStorage 和 IndexDB 無法讀取 DOM 和 JS 對象無法獲取 Ajax請求發(fā)送不出去。

前后端分離的模式下,前后端的域名是不一致的,所以就會出現(xiàn)跨域問題。

問題

當(dāng)我們開發(fā)完前端一個功能之后,需要運(yùn)行調(diào)試 ,通常前后端分離情況下,兩套程序都運(yùn)行起來之后,肯定會出現(xiàn) 協(xié)議、域名、端口不一致的形況吧。

那么前端調(diào)用后端接口時就會產(chǎn)生跨域問題。怎么辦呢?就需要代理(proxy)出場了。

跨域的解決方案

解決跨域的方案有很多,比如:jsonp、cors、Node代理、nginx反向代理。這里我們只討論 proxy。

vue中的proxy就是利用了Node代理。

代理服務(wù)器是如何解決跨域的?

這樣就可以串通了,前端通過axios發(fā)送請求時,會默認(rèn)發(fā)送給本地的特性,來發(fā)送給前端配置的代理,代理根據(jù)特定規(guī)則,將地址轉(zhuǎn)換為后端的接口,并請求后端接口,這樣就解決了跨域的問題了。

那前端vue中怎樣配置代理服務(wù)器呢?

proxy配置

假如我現(xiàn)在想請求后端的 一個接口 例如:http://www.aaabbbccc.com/login ,這樣我們應(yīng)該怎樣配置代理服務(wù)器呢?

以vue cli3.0為例

// vue.config.js
  devServer: {  //開啟代理服務(wù)器
    proxy:{
      "/api": {  // /api是自行設(shè)置的請求前綴,按照這個來匹配請求,有這個字段的請求,就會走到代理來。
          target: "http://www.aaabbbccc.com", // 需要代理的域名,目標(biāo)域名,會替換掉匹配字段之前的路徑
           ws: false, // 是否啟用websockets
          changeOrigin: true, //是否跨域
          pathRewrite: {  //重寫匹配的字段,如果不需要放在請求路徑上,可以重寫為""
              "^/api": ""
          }
      },
   
  },
  }
 
 
  //vue cli2 .0 的放在 config文件夾中的index.js  中
    dev: {
    proxyTable:{
      "/api": {
          target: "http://www.aaabbbccc.com", // 需要代理的域名
           ws: false, // 是否啟用websockets
          changeOrigin: true, //開啟跨域
          pathRewrite: {  //重寫請求路徑上匹配到的字段,如果不需要在請求路徑上,重寫為""
              "^/api": "",
             
          }
      },
  },
  }

以上配置中,我配置了一個 /api,只有包含這個請求的路徑才會走代理,例如:

http://localhost:8080/api/login //這個就可以走代理

http://localhost:8080/login //這個就不行

可以看到,要想所有的請求都進(jìn)入代理中,就必須包含/api這個路徑,那么我可以對axios進(jìn)行二次封裝,給所有的請求加這個前綴,代碼如下:

const requests = axios.create({
  
  baseURL:'/api', // 設(shè)置通用請求的地址前綴
  
  timeout:10000  //請求超時的時間
});
export default requests  //將requests實(shí)例,對外進(jìn)行暴露

發(fā)送請求可以寫為:

requests.get('/login').then((response) => {})
requests.get('/getlist').then((response) => {})
requests.get('/user/hello').then((response) => {})

此時我發(fā)送的請求就是:

http://localhost:8080/api/login

http://localhost:8080/api/getlist

http://localhost:8080/api/user/hello

通過代理的 target屬性 加工之后就是 :

http://www.aaabbbccc.com/api/login

http://www.aaabbbccc.com/api/getlist

http://www.aaabbbccc.com/api/user/hello

就是把 /api 之前的路徑 修改成了 target里配置的 目標(biāo)服務(wù)器的路徑。

在通過 pathRewrite屬性 將 /api 替換為空 為:

http://www.aaabbbccc.com/login

http://www.aaabbbccc.com/getlist

http://www.aaabbbccc.com/user/hello

這樣就可以訪問到后端的對應(yīng)接口了。

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 記錄vue做微信自定義分享的一些問題

    記錄vue做微信自定義分享的一些問題

    這篇文章主要介紹了記錄vue做微信自定義分享的一些問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • ElementUI 修改默認(rèn)樣式的幾種辦法(小結(jié))

    ElementUI 修改默認(rèn)樣式的幾種辦法(小結(jié))

    這篇文章主要介紹了ElementUI 修改默認(rèn)樣式的幾種辦法(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Electron采集桌面共享和系統(tǒng)音頻(桌面捕獲)實(shí)例

    Electron采集桌面共享和系統(tǒng)音頻(桌面捕獲)實(shí)例

    這篇文章主要為大家介紹了Electron采集桌面共享和系統(tǒng)音頻(桌面捕獲)實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • vue實(shí)現(xiàn)一個滾動條樣式

    vue實(shí)現(xiàn)一個滾動條樣式

    滾動條能夠給用戶帶來極好的體驗(yàn)效果,今天通過本文給大家分享vue實(shí)現(xiàn)一個滾動條樣式,代碼簡單易懂,需要的朋友參考下吧
    2021-07-07
  • Vue常用實(shí)例方法示例梳理分析

    Vue常用實(shí)例方法示例梳理分析

    在了解vue的常用的實(shí)例方法之前,我們應(yīng)該先要了解其常用的實(shí)例屬性,你能了解到的vue實(shí)例屬性有哪些呢?小編在這里就列舉了幾個常用的vue實(shí)例的屬性。大家可以一起參考學(xué)習(xí)一下
    2022-08-08
  • vue中LocalStorage與SessionStorage的區(qū)別與用法

    vue中LocalStorage與SessionStorage的區(qū)別與用法

    本文主要介紹了LocalStorage和SessionStorage。LocalStorage和SessionStorage是兩種存儲方式,本文詳細(xì)的介紹一下區(qū)別以及用法,感興趣的可以了解一下
    2021-09-09
  • 使用vue-cli+webpack搭建vue開發(fā)環(huán)境的方法

    使用vue-cli+webpack搭建vue開發(fā)環(huán)境的方法

    這篇文章主要介紹了使用vue-cli+webpack搭建vue開發(fā)環(huán)境的方法,需要的朋友可以參考下
    2017-12-12
  • Vue開發(fā)環(huán)境跨域訪問問題

    Vue開發(fā)環(huán)境跨域訪問問題

    這篇文章主要介紹了Vue開發(fā)環(huán)境跨域訪問問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • 新手vue構(gòu)建單頁面應(yīng)用實(shí)例代碼

    新手vue構(gòu)建單頁面應(yīng)用實(shí)例代碼

    本篇文章主要介紹了新手vue構(gòu)建單頁面應(yīng)用實(shí)例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 解決Vue2?axios發(fā)請求報400錯誤"Error:?Request?failed?with?status?code?400"

    解決Vue2?axios發(fā)請求報400錯誤"Error:?Request?failed?with?s

    這篇文章主要給大家介紹了關(guān)于如何解決Vue2?axios發(fā)請求報400錯誤"Error:?Request?failed?with?status?code?400"的相關(guān)資料,在Vue應(yīng)用程序中我們通常會使用axios作為網(wǎng)絡(luò)請求庫,需要的朋友可以參考下
    2023-07-07

最新評論

姚安县| 安国市| 泰州市| 乐东| 甘孜县| 岱山县| 宝鸡市| 双牌县| 聊城市| 西贡区| 东乌| 米泉市| 巴彦县| 新干县| 紫金县| 宁强县| 松桃| 星座| 中阳县| 长武县| 天峻县| 特克斯县| 蒙城县| 宁远县| 泸溪县| 永康市| 长岛县| 龙泉市| 镇原县| 墨江| 临邑县| 共和县| 永州市| 二手房| 兰溪市| 呼伦贝尔市| 衡南县| 五河县| 新宁县| 德江县| 霍邱县|