Vue3+axios+Vite配置Proxy代理解决跨域

以这个API为例:https://www.rootdata.com/Api/Doc

vite新建vue项目之后

  • vite.config.js \
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'

export default defineConfig({
  server:{
    proxy: {
      '/rootdata':{
        target: 'https://api.rootdata.com/open/ser_inv',
        changeOrigin: true,
        rewrite: (path)=>path.replace(/^\/rootdata/, '')
      }
    }
  },
  plugins: [vue()],
  resolve: {
    alias: {
      "@": path.resolve("./src") // 相对路径别名配置,使用 @ 代替 src
    }
  }
})

  • APP.vue
    script标签中(记得pnpm install axios
    这段代码是把https://www.rootdata.com/Api/Doc中的示例代码转换过来的
import HelloWorld from './components/HelloWorld.vue'
// 导入 axios 用于发送 HTTP 请求
import { ref, onMounted } from 'vue';
import axios from 'axios';

const getdata = ()=>{
  axios.post('/rootdata', {
      query: 'ETH'
    }, {
      headers: {
        "apikey": "XXXXXXX", 这里写自己的KEY
        "language": "en",
        "Content-Type": "application/json"
      }
    })
    .then(response => {
      console.log(response);
      
    })
    .catch(error => {
      console.error("Error:", error);
    });
}
onMounted(()=>{
  getdata()
});

Vite + Vue3 中处理axios问题,通常不需要后端配置,因为Vite提供了一个内置的开发服务器,可以自动处理本地开发环境下的CORS问题。以下是一种常见的解决方案: 1. **Vue.config.js 配置**: - 在`src`目录下创建或打开`vue.config.js`文件,这是一个全局的配置文件。 ```javascript import axios from &#39;axios&#39;; module.exports = { devServer: { proxy: [ // 使用代理规则,将所有匹配 &#39;/api&#39; 的请求转发到 &#39;http://localhost:8080&#39; (假设你的后端服务运行在这里) { target: &#39;http://localhost:8080&#39;, changeOrigin: true, pathRewrite: { &#39;^/api&#39;: &#39;&#39; }, // 将&#39;/api&#39;前缀替换为空字符串 }, ], }, configureWebpack: config => { if (process.env.NODE_ENV === &#39;production&#39;) { // 生产环境不启用代理,生产构建会直接发送请求到服务器 delete config.devServer.proxy; } }, axios: axios, // 注册axios实例,确保它会被应用到组件中 }; ``` 2. **在组件中使用axios**: 现在可以在Vue组件内部正常使用`this.$axios`,它已经配置好了。 ```javascript <template> <div> <button @click="fetchData">获取数据</button> </div> </template> <script> import axios from &#39;axios&#39;; export default { methods: { fetchData() { this.$axios.get(&#39;/api/data&#39;).then(response => { console.log(response.data); }).catch(error => { console.error(&#39;Error fetching data:&#39;, error); }); }, }, }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值