赞
踩
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/, '') //重写路径 } } } })
import axios from 'axios'
axios.get('/api/product/getBaseCategoryList').then((res) => {
console.log('success:' + res.data);
}).catch((err) => {
console.log('failed:' + err.data);
});
出现这些错误是因为 rewrite,写这行代码时要看接口有没有带上/api,如果接口本身就有/api则不需要重写路径,将重写路径的这行代码删掉就好了
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, //支持跨域 } } } })
之后就跨域正常跨域了
import axios from 'axios' const requests = axios.create({ baseURL:"/api", timeout:5000 }); //请求拦截器,在发送请求之前,请求拦截器可以检测到,可以在请求发出去之前做一些事情 requests.interceptors.request.use(config=>{ return config; }); //相应拦截器 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); });
这样写也可以跨域成功
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。