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

vue如何解決axios請(qǐng)求前端跨域問(wèn)題

 更新時(shí)間:2021年10月24日 10:58:09   作者:浪漫主義碼農(nóng)  
vue項(xiàng)目中,前端使用axios與后臺(tái)進(jìn)行數(shù)據(jù)請(qǐng)求或者提交的時(shí)候,如果后臺(tái)沒(méi)有設(shè)置跨域,瀏覽器做數(shù)據(jù)請(qǐng)求的時(shí)候就會(huì)報(bào)錯(cuò),這篇文章主要給大家介紹了關(guān)于vue如何解決axios請(qǐng)求前端跨域問(wèn)題的相關(guān)資料,需要的朋友可以參考下

前言

最近在寫(xiě)純前端的vue項(xiàng)目的時(shí)候,碰到了axios請(qǐng)求本機(jī)的資源的時(shí)候,出現(xiàn)了訪問(wèn)報(bào)404的問(wèn)題。這就讓我很難受。查詢了資料原來(lái)是跨域的問(wèn)題。

在正常開(kāi)發(fā)中跨域問(wèn)題有很多的解決方案。最常見(jiàn)的就是后端修改響應(yīng)頭。但是前端也可以解決,通過(guò)反向代理。為了防止下一次這樣的錯(cuò)誤出現(xiàn),記錄一下,總結(jié)一下。

所以現(xiàn)在我們來(lái)復(fù)盤(pán)一下,然后解決掉。

一、為什么會(huì)出現(xiàn)跨域的問(wèn)題?

跨域:瀏覽器從一個(gè)域名的網(wǎng)頁(yè)去請(qǐng)求另一個(gè)域名的資源時(shí),域名、端口、協(xié)議任一不同,都是跨域。

在前后端分離的模式下,前后端的域名是不一致的,此時(shí)就會(huì)發(fā)生跨域訪問(wèn)問(wèn)題??缬騿?wèn)題來(lái)源于JavaScript的同源策略,即只有 協(xié)議+主機(jī)名+端口號(hào)(如存在)相同,則允許相互訪問(wèn)。也就是說(shuō)JavaScript只能訪問(wèn)和操作自己域下的資源,不能訪問(wèn)和操作其他域下的資源??缬騿?wèn)題是針對(duì)JS和ajax的。而axios是通過(guò)Promise實(shí)現(xiàn)對(duì)ajax技術(shù)的一種封裝,也同樣存在跨域問(wèn)題。

二、解決方案

這里我就使用本機(jī)的開(kāi)啟兩個(gè)不同的端口來(lái)測(cè)試。

未處理跨域前的報(bào)錯(cuò)

沒(méi)有做跨域處理請(qǐng)求是這樣的

 axios.get('http://localhost:8080/getData')
 .then(res => {
   console.log(res)
 })
 .catch(err => {
   console.error(err); 
 })

跨域資源共享(CORS)

前端進(jìn)行反向代理來(lái)解決跨域問(wèn)題。原理圖如下:

1、vue項(xiàng)目的端口是8081

2、自己電腦開(kāi)啟了一個(gè)8080的端口,請(qǐng)求/getData就會(huì)放回json數(shù)據(jù)。

3、配置代理

1.在vue2.0中

修改config文件夾下的index.js文件,在proxyTable中加上如下代碼:

   proxyTable: {
      '/apis': {
        target: 'http://localhost:8080/',  //要解決跨域的接口的域名
        secure:false,           //如果是https接口,需要配置這個(gè)參數(shù)
        changeOrigin: true,  // 如果接口跨域,需要進(jìn)行這個(gè)參數(shù)配置
        pathRewrite: {
          '^/apis': ''  // 路徑重寫(xiě)
        }
      },
    },

然后在請(qǐng)求中axios中這樣寫(xiě)

 axios.get('apis/getData')
 .then(res => {
   console.log(res)
 })
 .catch(err => {
   console.error(err); 
 })

分析:

target后面的就是需要請(qǐng)求的網(wǎng)址的公共部分,然后用/apis來(lái)代理這個(gè),最后重寫(xiě)一些路徑,請(qǐng)求的時(shí)候使用的我們的代理的apis來(lái)作為前綴。

這個(gè)前綴我們可以自定義,proxyTable是對(duì)象,所以我們可以配多個(gè)代理。

跨域解決

2.在vue3.0中

vue-cli3 腳手架搭建完成后,項(xiàng)目目錄中沒(méi)有 vue.config.js 文件,需要手動(dòng)創(chuàng)建

新建一個(gè)vue.config.js,配置以下信息,同樣可以解決。

module.exports = {   
    devServer: {
        proxy: {
            '^/api': {
                target: 'http://localhost:8080/',//接口的前綴
                ws:true,//代理websocked
                changeOrigin:true,//虛擬的站點(diǎn)需要更管origin
                pathRewrite:{
                    '^/api':''//重寫(xiě)路徑
                }
            }
        }
    }
}

小結(jié):

changeOrigin: true :開(kāi)啟代理:在本地會(huì)創(chuàng)建一個(gè)虛假服務(wù)器,然后發(fā)送請(qǐng)求的數(shù)據(jù),并同時(shí)接收請(qǐng)求的數(shù)據(jù),這樣服務(wù)端和服務(wù)端就可以進(jìn)行數(shù)據(jù)的交互。

apis就是接口實(shí)際請(qǐng)求的前綴,去代理了我們的實(shí)際的接口前綴的公共部分,也就是協(xié)議+主機(jī)名+端口號(hào)

比如 請(qǐng)求接口為localhost:8080/getData 我們只需要傳入:getData
那么公共的域名就是 localhost:8080/,我們就是在請(qǐng)求接口的公共域名localhost:8080/改為api/即可!

把項(xiàng)目運(yùn)行起來(lái)可以看到接口請(qǐng)求的路徑為 :localhost:8081/apis/getData

而進(jìn)過(guò)代理后,實(shí)際的請(qǐng)求路徑是 : localhost:8080/getData

寫(xiě)在最后

在學(xué)習(xí)中還是要多看官方文檔,在跨域等配置問(wèn)題上,官方文檔也給出了很多的配置信息,vue cli配置

總結(jié)一下最近的現(xiàn)象:只要累不死,就往死里卷。加油各位。

到此這篇關(guān)于vue如何解決axios請(qǐng)求前端跨域問(wèn)題的文章就介紹到這了,更多相關(guān)vue解決axios請(qǐng)求前端跨域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue+elementui 實(shí)現(xiàn)上傳文件/導(dǎo)入文件的功能示例詳解

    vue+elementui 實(shí)現(xiàn)上傳文件/導(dǎo)入文件的功能示例詳解

    文章介紹了如何使用Vue和Element UI實(shí)現(xiàn)上傳文件和導(dǎo)入文件的功能,主要內(nèi)容包括:上傳組件的使用、data中的數(shù)據(jù)存儲(chǔ)、methods中的方法(選擇文件、點(diǎn)擊確定上傳文件、刪除文件),文章還提供了相關(guān)鏈接供進(jìn)一步學(xué)習(xí),感興趣的朋友一起看看吧
    2025-03-03
  • 深入淺出vue圖片路徑的實(shí)現(xiàn)

    深入淺出vue圖片路徑的實(shí)現(xiàn)

    這篇文章主要介紹了深入淺出vue圖片路徑的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Vue API中setup ref reactive函數(shù)使用教程

    Vue API中setup ref reactive函數(shù)使用教程

    setup是用來(lái)寫(xiě)組合式api,內(nèi)部的數(shù)據(jù)和方法需要通過(guò)return之后,模板才能使用。在之前vue2中,data返回的數(shù)據(jù),可以直接進(jìn)行雙向綁定使用,如果我們把setup中數(shù)據(jù)類型直接雙向綁定,發(fā)現(xiàn)變量并不能實(shí)時(shí)響應(yīng)。接下來(lái)就詳細(xì)看看它們的使用
    2022-12-12
  • 深入理解Vue 組件之間傳值

    深入理解Vue 組件之間傳值

    這篇文章較詳細(xì)的給大家介紹了vue組件之間傳值的方法,在 Vue 中,可以使用props向子組件傳遞數(shù)據(jù)。具體傳遞方法大家跟隨腳本之家小編一起看看吧
    2018-08-08
  • Vue中自定義日志打印插件問(wèn)題

    Vue中自定義日志打印插件問(wèn)題

    這篇文章主要介紹了Vue中自定義日志打印插件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue.js實(shí)現(xiàn)九宮格圖片展示模塊

    Vue.js實(shí)現(xiàn)九宮格圖片展示模塊

    這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)九宮格圖片展示模塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 解決修改el-pagination顯示文字的問(wèn)題

    解決修改el-pagination顯示文字的問(wèn)題

    這篇文章主要介紹了解決修改el-pagination顯示文字的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 非常實(shí)用的vue導(dǎo)航鉤子

    非常實(shí)用的vue導(dǎo)航鉤子

    這篇文章主要為大家分享了一個(gè)非常實(shí)用的vue導(dǎo)航鉤子,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Vue中的v-cloak使用解讀

    Vue中的v-cloak使用解讀

    本篇文章主要介紹了Vue中的v-cloak使用解讀,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • vue源碼學(xué)習(xí)之Object.defineProperty對(duì)象屬性監(jiān)聽(tīng)

    vue源碼學(xué)習(xí)之Object.defineProperty對(duì)象屬性監(jiān)聽(tīng)

    這篇文章主要介紹了vue源碼學(xué)習(xí)之Object.defineProperty對(duì)象屬性監(jiān)聽(tīng),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論

万年县| 秦安县| 钟山县| 成武县| 登封市| 沭阳县| 昆明市| 静宁县| 屏东县| 五常市| 广宁县| 民乐县| 米易县| 安塞县| 麻阳| 辽中县| 全椒县| 平江县| 西平县| 新化县| 上高县| 逊克县| 黑河市| 云阳县| 宜春市| 扎赉特旗| 东宁县| 阿图什市| 陵川县| 阜新市| 句容市| 南乐县| 东乌珠穆沁旗| 屯昌县| 青龙| 南汇区| 得荣县| 聂拉木县| 贵定县| 太仆寺旗| 梁山县|