vue(脚手架创建)代理解决跨域问题

目录

为什么会出现跨域问题 

什么是跨域

 Vue CLI

 Vue2解决跨域问题

不重写路径

重写路径

vue.config.js代码

Vue3解决跨域问题

Vite+Vue解决跨域问题

vite.config.ts代码

总结


为什么会出现跨域问题 

出于浏览器的同源策略的限制。同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建同源策略之上的,浏览器只是针对同源策略的一种实现。同源策略会组织一个域的javascript脚本和另一个域的内容进行交互。所谓同源(即指在同一个域)技术两个具有相同的协议(protocol),主机(host)和端口号(port)。

什么是跨域

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。

 Vue CLI

参考官网:配置参考 | Vue CLI (vuejs.org)

 Vue2解决跨域问题

不出意外跨域了,那我们应该如何解决跨域问题呢,我们先找到文件目录下vue.config.js文件,如果没有的话可以自己创建。

这是创建开始自带的,但是我建议加一条语句,如下图所示,加了之后,当你定义了一个东西,或者引用了一个东西没有去使用的时候便不会报错,反之则会报错。

不重写路径

 现在我来对上面的情况做一个简单的解释,/api/v1/topics的请求路径会被拦截,并把这些请求路径转发https://www.vue-js.com这个域名下形成了https://www.vue-js.com/api/v1/topics。便可以实现跨域访问。

重写路径

如果不重写的话,url便会变成https://www.vue-js.com/api/api/v1/topics这时候就多了一个/api,所以要将/api变成空字符,也就是需要重写,proxy对应的键值是一个字典,里面可以根据自己的需要,去拦截以什么开头的路径请求,可以写很多项。

vue.config.js代码

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({transpileDependencies: true,lintOnSave: false,//关闭eslint校验devServer: {proxy:{'/api': {                // /api 表示拦截以/api开头的请求路径target: 'https://www.vue-js.com/api', //跨域的域名(不需要写路径)//ws:true             //是否代理websockedchangeOrigin: true,    //是否开启跨域pathRewrite: {         //重写路径'^/api': ''          //把/api变为空字符}},}}
})

Vue3解决跨域问题

亲测,也是一样的!!!

Vite+Vue解决跨域问题

只是写法稍微有点不同,但是大同小异!!!

vite.config.ts代码

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue()],server: {proxy: {// 将以 /api 开头的请求转发到后端服务器'/api': {target: 'https://www.vue-js.com/api', // 后端服务器地址changeOrigin: true,rewrite: path => path.replace(/^\/api/, '') // 去掉请求路径中的 /api}}}})

总结

最近遇到了这个问题,脑子比较乱,于是便写下博客梳理一下,希望能对大家提供一些帮助,如果有疑问或者我写的哪里有问题,欢迎评论区留言!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/3973.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络环境配置

第一种方式(自动获取): 说明:登陆后,通过界面的来设置自动获取IP 特点:Linux启动后会自动获取IP 缺点:是每次自动获取的IP地址可能不一样 第二种方法(指定IP): 1、说明…

科技资讯|2023Q1中国电动汽车销量增长 29%,充电桩市场持续增长

根据市场调查机构公布的 2023 年第 1 季度中国国内电动汽车市场报告,比亚迪继续引领竞争日益激烈的电动汽车市场。 报告称 2023 年第 1 季度中国乘用电动汽车销量同比增长 29%,其中纯电动汽车(BEV)占销售额的近 70%、插电式混合…

Java——《面试题——网络篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java…

Python笔记-1

Python安装问题 1.python是一门解释性的计算机程序语言。 2.IDLE就是我们写Python程序的地方(小型的集成开发环境,编辑器)。 3.Pycharm是一个大型的集成开发环境(IDLE的扩展,不仅可以写,还能管理、调试&am…

基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

HCIP(HCIA回顾)

OSI/RM 七层 应用层 表示层 会话层 传输层 区分不同的流量,定义传输方式。 端口号由16位二进制构成,范围为0~65535(其中0不作为传输层的端口使用),所以真实取值范围为1~65535;其中,1~1023称为知名端口号。 1、可靠…

【Docker】Docker的优势、与虚拟机技术的区别、三个重要概念和架构及工作原理的详细讲解

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…

Ubuntu查看显卡信息

查看显卡信息,终端输入 lspci | grep VGA 输出结果 0000:65:00.0 VGA compatible controller: NVIDIA Corporation Device 24b0 (rev a1) 发现是十六进制码,进入网址PCI Devices查询,输入 24b0 并点击 Jump,得到结果 显卡型号…

软考A计划-系统集成项目管理工程师-项目整体管理-中

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Redis实战案例8-缓存击穿及其解决方案和案例说明

1. 缓存击穿 缓存击穿是指一个被频繁访问(高并发访问并且缓存重建业务较复杂)的缓存键因为过期失效,同时又有大量并发请求访问此键,导致请求直接落到数据库或后端服务上,增加了系统的负载并可能导致系统崩溃 常见的解决…

数据库性能测试

目录 前言: 1.引入数据库驱动包 2.添加数据库配置元件 3、JDBCRequest参数化 4、Variablesnames参数使用方法: 前言: 数据库性能测试是测试数据库系统在各种条件下的性能和稳定性的过程。它可以帮助测试人员识别数据库系统的性能瓶颈&a…

【Zookeeper】win安装随笔

目录 下载地址下载目标解压后目录结构配置文件配置文件详情伪分布式安装LinuxZooKeeper audit is disabled启动解决报错:SLF4J: Class path contains multiple SLF4J bindings. _ 下载地址 https://zookeeper.apache.org/releases.html 下载目标 记住选择带bin的…