vue3 vite配置跨域及不生效問題解決
vue3 vite配置跨域以及不生效問題
1. 在vite.config中添加配置
server: {
host: "0.0.0.0",
cors: true,
port: 8991,
open: false, //自動(dòng)打開
proxy: {
// 這里的ccc可亂寫, 是拼接在url后面的地址 如果接口中沒有統(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中配置開發(fā)環(huán)境下的基地址(沒有該文件夾手動(dòng)新建)
VITE_BASEURL='/ccc'
3. 配置axios的基地址
const instancs = axios.create({
baseURL: import.meta.env.VITE_BASEURL,
});最后:
我之前是犯過一個(gè)錯(cuò)誤的, 導(dǎo)致我搞了半天都沒搞好... 就是配置完vite.config, 那個(gè)/ccc后綴是接口沒有的自己加的, 那么就要手動(dòng)加上去了...
這是我們公司后端的問題, 大部分后端都會有統(tǒng)一的后綴的, 比如api, 但是我這后端沒按照這樣的規(guī)范來, 然后自己也比較菜... 如果這樣配置到時(shí)候生產(chǎn)就不能這樣寫了, 目前我這樣配置在開發(fā)環(huán)境下能正常跑。
解決vue3+vite跨域失敗問題
vue3+vite用proxy跨域出現(xià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ā)送請求的文件中的跨域請求代碼
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í)要看接口有沒有帶上/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ā)送請求的文件中的跨域請求代碼如下
import axios from 'axios'
const requests = axios.create({
baseURL:"/api",
timeout:5000
});
//請求攔截器,在發(fā)送請求之前,請求攔截器可以檢測到,可以在請求發(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配置跨域以及不生效問題的文章就介紹到這了,更多相關(guān)vue3 vite配置跨域內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)登錄時(shí)的圖片驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)登錄時(shí)的圖片驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
vue項(xiàng)目打包優(yōu)化的方法實(shí)戰(zhàn)記錄
最近入職了新公司,接手了一個(gè)新拆分出來的Vue項(xiàng)目,針對該項(xiàng)目做了個(gè)打包優(yōu)化,把經(jīng)驗(yàn)分享出來,下面這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目打包優(yōu)化的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
vue elementui 實(shí)現(xiàn)搜索欄公共組件封裝的實(shí)例代碼
這篇文章主要介紹了vue elementui 搜索欄公共組件封裝,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
vue3清空let?arr?=?reactive([])的實(shí)現(xiàn)示例
本文主要介紹了vue3清空let?arr?=?reactive([])的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03

