vue3 vite配置跨域及不生效問(wèn)題解決
vue3 vite配置跨域以及不生效問(wèn)題
1. 在vite.config中添加配置
server: { host: "0.0.0.0", cors: true, port: 8991, open: false, //自動(dòng)打開(kāi) proxy: { // 這里的ccc可亂寫, 是拼接在url后面的地址 如果接口中沒(méi)有統(tǒng)一的后綴可自定義 // 如果有統(tǒng)一后綴, 如api, 直接寫api即可, 也不用rewrite了 "^/ccc": { target: "http://116.62.200.158", // 真實(shí)接口地址, 后端給的基地址 changeOrigin: true, // 允許跨域 rewrite: (path) => path.replace(/^\/ccc/, ""), // 將ccc替換為空 }, }, },
2. 在.env.development中配置開(kāi)發(fā)環(huán)境下的基地址(沒(méi)有該文件夾手動(dòng)新建)
VITE_BASEURL='/ccc'
3. 配置axios的基地址
const instancs = axios.create({ baseURL: import.meta.env.VITE_BASEURL, });
最后:
我之前是犯過(guò)一個(gè)錯(cuò)誤的, 導(dǎo)致我搞了半天都沒(méi)搞好... 就是配置完vite.config, 那個(gè)/ccc后綴是接口沒(méi)有的自己加的, 那么就要手動(dòng)加上去了...
這是我們公司后端的問(wèn)題, 大部分后端都會(huì)有統(tǒng)一的后綴的, 比如api, 但是我這后端沒(méi)按照這樣的規(guī)范來(lái), 然后自己也比較菜... 如果這樣配置到時(shí)候生產(chǎn)就不能這樣寫了, 目前我這樣配置在開(kāi)發(fā)環(huán)境下能正常跑。
解決vue3+vite跨域失敗問(wèn)題
vue3+vite用proxy跨域出現(xiàn)的問(wèn)題
一、改錯(cuò)前的代碼
vite.config.js中的代碼
import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue()], server: { proxy: { '/api': { target: "http://gmall-h5-api.atguigu.cn", //跨域地址 changeOrigin: true, //支持跨域 rewrite: (path) => path.replace(/^\/api/, '') //重寫路徑 } } } })
發(fā)送請(qǐng)求的文件中的跨域請(qǐng)求代碼
import axios from 'axios' axios.get('/api/product/getBaseCategoryList').then((res) => { console.log('success:' + res.data); }).catch((err) => { console.log('failed:' + err.data); });
出現(xiàn)這些錯(cuò)誤是因?yàn)?rewrite,寫這行代碼時(shí)要看接口有沒(méi)有帶上/api,如果接口本身就有/api則不需要重寫路徑,將重寫路徑的這行代碼刪掉就好了
二、改正后vite.config.js代碼
import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue()], server: { proxy: { '/api': { target: "http://gmall-h5-api.atguigu.cn", //跨域地址 changeOrigin: true, //支持跨域 } } } })
之后就跨域正??缬蛄?/p>
三、如果想要保留rewrite這行代碼,就需要添加攔截器,配置baseURL:“/api”
發(fā)送請(qǐng)求的文件中的跨域請(qǐng)求代碼如下
import axios from 'axios' const requests = axios.create({ baseURL:"/api", timeout:5000 }); //請(qǐng)求攔截器,在發(fā)送請(qǐng)求之前,請(qǐng)求攔截器可以檢測(cè)到,可以在請(qǐng)求發(fā)出去之前做一些事情 requests.interceptors.request.use(config=>{ return config; }); //相應(yīng)攔截器 requests.interceptors.response.use((res)=>{ return res.data; },(error)=>{ alert(error.message); return new Promise(); }) requests.get('/api/product/getBaseCategoryList').then((res) => { console.log('success:' + res.data); }).catch((err) => { console.log('failed:' + err.data); });
這樣寫也可以跨域成功
到此這篇關(guān)于vue3 vite配置跨域以及不生效問(wèn)題的文章就介紹到這了,更多相關(guān)vue3 vite配置跨域內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 利用uniapp+vue3+js適配微信隱私協(xié)議開(kāi)發(fā)指南
- uniapp+vue3路由跳轉(zhuǎn)傳參的實(shí)現(xiàn)
- uniapp-vue3-彈出選擇組件wo-pop-selector使用示例
- Vue3全局配置Axios并解決跨域請(qǐng)求問(wèn)題示例詳解
- vue3之a(chǎn)xios跨域請(qǐng)求問(wèn)題及解決
- Vue3?跨域配置devServer的參數(shù)和設(shè)置方法
- Vue3跨域解決方案實(shí)例詳解
- Vue3.0?axios跨域請(qǐng)求代理服務(wù)器配置方式
- uniapp Vue3中如何解決web/H5網(wǎng)頁(yè)瀏覽器跨域的問(wèn)題
相關(guān)文章
vue實(shí)現(xiàn)登錄時(shí)的圖片驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)登錄時(shí)的圖片驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04vue項(xiàng)目如何去掉URL中#符號(hào)的方法
在開(kāi)發(fā)過(guò)程中發(fā)現(xiàn)路徑中帶有/#/的標(biāo)示,而且還去不掉,很丑陋,下面這篇文章主要給大家介紹了vue項(xiàng)目如何去掉URL中#符號(hào)的相關(guān)資料,文中通過(guò)實(shí)例代碼的非常詳細(xì),需要的朋友可以參考下2022-07-07vue項(xiàng)目打包優(yōu)化的方法實(shí)戰(zhàn)記錄
最近入職了新公司,接手了一個(gè)新拆分出來(lái)的Vue項(xiàng)目,針對(duì)該項(xiàng)目做了個(gè)打包優(yōu)化,把經(jīng)驗(yàn)分享出來(lái),下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目打包優(yōu)化的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08vue elementui 實(shí)現(xiàn)搜索欄公共組件封裝的實(shí)例代碼
這篇文章主要介紹了vue elementui 搜索欄公共組件封裝,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01vue3清空l(shuí)et?arr?=?reactive([])的實(shí)現(xiàn)示例
本文主要介紹了vue3清空l(shuí)et?arr?=?reactive([])的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03