vue3+vite项目跨域配置踩坑实战篇

针对“vue3+vite项目跨域配置踩坑实战篇”的完整攻略,我来进行详细讲解。

1. 什么是跨域问题?

在浏览器中,由于同源策略(Same-origin policy)的限制,不同域名、不同端口、不同协议的网页不能直接进行网络通信。跨域问题(Cross-Origin Resource Sharing,CORS)就是指在同一域名下,资源无法正常请求的问题。

2. 跨域问题的解决方案

我们可以使用代理,在后端服务器进行跨域的处理。但是这样会增加后端服务器的压力,而且配置起来比较麻烦。因此,我们一般使用前端自己处理跨域问题。

常用的跨域处理方式包括以下:

  • 在目标服务器端设置CORS策略,允许特定来源网站访问;
  • 使用JSONP(JSON Padding)跨域;
  • 使用WebSocket协议跨域;
  • 跨域资源共享(CORS)。

其中,本篇攻略主要介绍的是第四种方式,即CORS跨域资源共享。通过设置目标服务器的HTTP响应,允许特定来源网站的跨域访问。

3. Vite项目启动后跨域问题如何解决?

我们需要在vue3+vite项目的配置文件中,对跨域请求进行处理。我们需要添加 vite.config.js 配置文件,进行如下配置:

import { defineConfig } from 'vite'

export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'https://www.example.com',    // 目标服务器地址
        changeOrigin: true,   // 是否跨域
        secure:false,          // 如果是https接口,需要配置这个parameter
        rewrite: (path) => path.replace('/api/', '/'),   // 重写路径
      },
    },
  },
})

其中,/api 是指代理的前缀,https://www.example.com 是目标服务器地址,changeOrigin 表示是否跨域,rewrite 是重写路径规则。

在使用时,我们只需要将请求路径中的 /api 替换成 / 即可,例如:

axios.get('/api/user')  // 正确写法
axios.get('/user')      // 重写路径后的写法

这样我们就可以在vue3+vite项目中解决跨域问题了。

4. 示例说明

示例1:在vue3+vite项目中,访问本地mock数据时,在vite.config.js文件中的配置如下:

import { defineConfig } from 'vite'

export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',    // 代理到指定地址
        changeOrigin: true,   // 是否跨域
        secure:false,          // 如果是https接口,需要配置这个parameter
        rewrite: (path) => path.replace('/api/', '/'),   // 重写路径
      },
    },
  },
})

示例2:在vue3+vite项目中,访问服务器API数据时,在vite.config.js文件中的配置如下:

import { defineConfig } from 'vite'

export default defineConfig({
  server: {
    proxy: {
      '/api': {
        target: 'https://www.example.com',    // 代理到指定地址
        changeOrigin: true,   // 是否跨域
        secure:false,          // 如果是https接口,需要配置这个parameter
        rewrite: (path) => path.replace('/api/', '/'),   // 重写路径
      },
    },
  },
})

这两个示例说明了在vue3+vite项目中,如何通过代理解决跨域问题。这样就可以愉快地进行数据交互了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue3+vite项目跨域配置踩坑实战篇 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue项目打包部署后默认路由不正确的解决方案

    首先,我们需要理解打包过程中的路由问题。在vue项目中,路由由路由表文件(router/index.js)控制,如果不指定默认路由,就会采用默认的路由配置方式,即会访问localhost:8080/#/,但是在部署后,如果直接访问网站地址,就无法正确渲染网页,因为在服务器中,项目的router.base需要指定为网站地址,而不是默认的localhost:80…

    Vue 2023年5月28日
    00
  • Vue之生命周期函数详解

    下面是Vue的生命周期函数详解: Vue生命周期函数详解 Vue实例在被创建、挂载/销毁到DOM以及更新等状态时,会触发一些钩子函数,这些钩子函数就被称为Vue的生命周期函数。Vue的生命周期函数可以让我们在组件中的关键事件发生时执行我们自己的代码逻辑。 在Vue中生命周期函数按执行顺序分为以下三类: 创建阶段:initialization 更新阶段:mou…

    Vue 2023年5月27日
    00
  • 详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on

    接下来我将为大家详细讲解Vue的常用指令v-if、v-for、v-show、v-else、v-bind、v-on的使用方法: v-if v-if指令根据表达式的值的真假来对元素进行条件渲染。即如果表达式的值为true,则显示元素,否则不显示元素。下面是v-if的示例代码: <div v-if="show">显示内容</d…

    Vue 2023年5月28日
    00
  • vue实现垂直无限滑动日历组件

    首先,我们需要明确一下“垂直无限滑动日历组件”的概念。它是一种可以在垂直方向上无限滑动的日历组件,可以根据用户的手势操作,实现不同日期之间的切换,并且在切换时能够保持连续的滑动效果。在这个过程中,我们需要用到Vue框架,并且借助一些第三方工具来实现这个组件。 下面是实现这个组件的详细攻略: 1. 安装必要的第三方库 在Vue中,我们可以使用vue-cli来创…

    Vue 2023年5月29日
    00
  • vue快速入门基础知识教程

    以下是“vue快速入门基础知识教程”的完整攻略: 一、Vue.js是什么 Vue.js是一款轻量级、渐进式的JavaScript框架。它易于上手,具有更加简洁灵活的API,能够更加方便的实现前端页面的数据双向绑定、组件化开发、模块化开发等功能。 二、Vue.js的核心概念 数据双向绑定 Vue.js通过数据双向绑定,能够实现页面数据的实时更新。当Vue实例中…

    Vue 2023年5月27日
    00
  • Mock.js在Vue项目中的使用小结

    我们来详细讲解如何在Vue项目中使用Mock.js。 步骤一:安装Mock.js 在Vue项目中使用Mock.js,需要先安装Mock.js的依赖包。可以使用npm进行安装,命令如下: npm install mockjs –save-dev 步骤二:创建mock数据 Mock.js提供了灵活的API可以用来生成随机的数据,从而方便地模拟接口返回的数据。在…

    Vue 2023年5月29日
    00
  • Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(一)

    下面是详细的攻略。 Spring boot + MyBatis + Vue.js + ElementUI 实现数据的增删改查实例代码(一) 实现目标 本项目旨在演示如何使用 Spring boot + MyBatis + Vue.js + ElementUI 构建一个简单的增删改查系统。项目实现的功能包括: 显示数据列表 新增数据 删除数据 修改数据 筛选数…

    Vue 2023年5月29日
    00
  • 详解Vue3 中的计算属性及侦听器

    详解Vue3 中的计算属性及侦听器 计算属性 计算属性是Vue中一种非常常见的属性类型,可以根据其他数据的变化而自动更新。在Vue3中,计算属性的写法有所变化,需要使用computed方法来定义。 <template> <div> <p>商品价格: {{ price }}</p> <p>打折后价格:…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部