手把手教你用vite搭建vue3.0项目(三):跨域代理

news/2024/7/10 1:46:11 标签: vue

1. 安装axios

值得一提的是,这里不用再加@next了,直接用就好。

yarn add axios

2. 请求接口

为了展示,我直接在Home.vue中使用,对于axios大家可以自行封装。

和之前vue2项目没有太大区别, 最多就是把比如api.js改成api.ts。

Home.vue

<script lang="ts">
import { defineComponent, onMounted } from "vue";
import axios from "axios";

export default defineComponent({
  name: "Home",
  components: {},
  setup() {
      onMounted(()=>{
          axios.get(`http://api.example.com/search?keywords=vue3`).then(res=>{
              console.log(res)
          })
      })
  },
});
</script>

跨域也是在情理之中,所以来到下一步,配置跨域代理。

3. 跨域代理

找到vite.config.ts,新建server部分代码

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [vue()],
  server: {
    host: '0.0.0.0',
    port: 8080,
    proxy: {
      '/api': {
        target: 'http://api.example.com',	//实际请求地址
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      },
    }
  }
})

将原来项目中的请求地址改成以/api开头的,如:

axios.get(`/api/search?keywords=vue3`).then(res=>{
              console.log(res)
          })

使用【本机pi】:8080重新启动项目,可以看到跨域问题解决了。

注意本来启动项目是使用localhost:3000,因为这里vite.config.ts做出了修改,所以换成了【本机ip】:8080

有人就会问了,怎么写法和平时看到的博客不一样呢。

其实,还不是因为vite文档更新了。

所以还是以文档为准:配置Vite


http://www.niftyadmin.cn/n/1290249.html

相关文章

linux (debian) 配置静态ip

在局域网内使用动态ip分配&#xff0c;机器动态的获取ip地址。可是我使用ssh登录的时候。总是断线。后来发现&#xff0c;原来机器总是在两个ip地址192.168.2.203和192.168.2.228之间切换。用ssh登录老师断线&#xff0c;实在在是受不了了。所以决定配置静态ip。配置静态ip涉及…

警惕!2016最大难题或源于云计算并发症

毫无疑问&#xff0c;云计算是本世纪目前为止最成功的技术之一&#xff0c;他对于任何规模的企业来讲都能提供不同程度的帮助。但是云计算并非无敌的存在&#xff0c;而且&#xff0c;快速发展的云计算所带来的并发症可能是本年度最棘手的问题。 云计算的“并发症” 云计算的并…

从短期攻击到国家网战 CISO角色如何转变

在美国旧金山召开的2016年第25届RSA大会上&#xff0c;来自一家医疗保健机构的首席信息安全官&#xff08;CISO&#xff09;发表了在新网络环境下&#xff0c;CISO的角色定位该怎样转变的主题讲演&#xff0c;引发与会者的广泛关注。 面对网络威胁的变化&#xff0c;CISO的角色…

$(#XXX).click()和$(#YYY).on(click,指定的元素,function(){});的区别(jQuery动态绑定事件)...

//绑定 下一页 的点击事件 $("a[aria-labelNext]").click(function(){ $("a[aria-labelPrevious]").show(); if(page.pageNo page.totalPage - 1){ $("a[aria-labelNext]").hide(); }else{ $("a[aria-labelNext]").show(); } …

Nginx(十二)-- Nginx+keepalived实现高可用

1.前提 两台Linux服务器&#xff0c;IP分别为192.168.80.128 和 192.168.80.129&#xff0c;都安装Nginx和keepalived&#xff0c;并启动。 2.配置双机热备 1.将192.168.80.128看作master&#xff08;主机&#xff09;&#xff0c;将192.168.80.129看作backup&#xff08;备机&…

vue-esign实现签字功能

vue-esign签字 当需要客户手写签字的时候&#xff0c;一款手写插件就显得尤为重要。用起来越趁手越丝滑&#xff0c;越好。 插件特点 vue-esign兼容 PC 和 Mobile&#xff1b; 画布自适应屏幕大小变化&#xff08;窗口缩放、屏幕旋转时画布无需重置&#xff0c;自动校正坐标…

springmvc中@PathVariable和@RequestParam的区别

http://localhost:8080/Springmvc/user/page.do?pageSize3&pageNow2 你可以把这地址分开理解&#xff0c;其中问号前半部分&#xff1a;http://localhost:8080/Springmvc/user/page.do 这个就是路径&#xff0c;是你的请求url&#xff0c;而如果这个路径上有数据匹配&…

laravel打印sql

2019独角兽企业重金招聘Python工程师标准>>> 快捷打印 Laravel 中的数据库查询&#xff08;SQL&#xff09;语句 5天前 ⋅ 375 ⋅ 11 ⋅ 11 闲话少叙&#xff0c;直接入题。首先&#xff0c;为什么要打印 Laravel 中 Query Builder 构建的 SQL 语句&#xff1f; …