vue跨域实现:proxy配置

news2024/11/24 14:28:00

一、什么是跨域

要了解跨域,首先得知道浏览器的同源策略。

同源策略:是由Netscape提出的一个安全策略,能够阻挡恶意文档,保护本地数据。它能限制一个源的文档或脚本对另一个源的交互,使得其它源的文档或脚本,无法读取或修改当前源。

是否同源:当两个url的域名、协议和端口均相同。

举例来说:url: http://127.0.0.1:80/demo/01.html 中组成部分如下图所示:

url是否同源原因

 http://127.0.0.1:80/demo/02.html 

 http://127.0.0.1:80/demo2/01.html 

同源协议、域名、端口均相同,只是文件地址不同
http://127.0.0.1:90/demo/01.html不同源端口不同
http://127.1.1.1:80/demo/01.html不同源域名不同
https://127.0.0.1:80/demo/01.html不同源协议不同
http://127.0.0.1/demo/01.html同源http:// 默认端口是 80

不同协议有不同的默认端口,当未指定端口时,则使用默认端口。

跨域:能实现在不同源之间的资源交互。

为什么要跨域:因为所有的资源有可能不在同一个域内,比如一个公司有很多子域,中间的通信就需要跨域。

二、vue项目跨域vue.config.js文件配置

1. publicPath配置

publicPath是部署时的基本url,一般情况下vue项目起什么名称,publicPath就赋值什么名称。

假设一个项目的初始地址为: http://127.0.0.1:80/,若是配置上publicPath: "/demo",则项目的初始地址则会变成http://127.0.0.1:80/demo/。

vue打包后的静态文件资源需要访问,所以需要一个文件路径放置vue的打包文件,后端nginx中对应配置的也是这个地址。

2. devServer.proxy代理配置

该字段主要是为了实现前后端通信的,当前后端分离开发,为了让前端开发人员在开发时访问到后端的接口,需要进行nginx配置实现跨域请求。

参考这个同学的文章:vue配置反向代理 devServer配置proxy,说明如下:

// vue.config.js文件
module.exports = {
//.....
  devServer: {
    host: 'localhost',
    port: 8080,
    proxy: {
      "/api": {
        target: "http://www.xxx.com", // 请求到/api/xx 就会被代理http://www.xxx.com/api/xxx
        //  secure: false, // 如果是https接口,需要配置这个参数
        changeOrigin: true, // 接口跨域 需打开这个参数
        pathRewrite: {
          '^/api': '', // 忽略前缀/api  则会被代理到http://www.xxx.com/xxx
        },
      }
    }
  },
}

其实很好理解,简单来说就是给实际的接口路径做了一层代理。

”/api”含义:匹配以”/api”开头接口,

target参数含义:默认将上面的"/api"拼接到该值的后面,映射成代理的实际路径。

举例:请求接口时如果写的是“/api/xxx”,使用代理后生成的实际请求路径就是’http://www.xxx.com/api/xxx’。

pathRewrite参数含义:路径重写,如果要请求的接口里面没有公共的api,直接从根目录开始的,那就需要把"/api"去掉或换成其它别的字符。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

来看一个RuoYi-Cloud-Plus的Bug_今天突然发现的---RuoYi-Cloud-Plus-master工作笔记0002

用的时候可以注意一些,今天发现一个问题: 是关于角色管理这里的,如果你用的不是超级管理员登录,超级管理员他这里指定了ID是1, 如果你用其他,也是管理员账号,比如用超级管理员创建了一个管理员的角色,并且分配了,角色管理给这个管理员,那么,这个时候,你在给这个分配了角色管理…

CSAPP - LinkLab实验(阶段1-5)

LinkLab实验&#xff08;阶段1-5&#xff09; 官网&#xff1a;http://csapp.cs.cmu.edu/3e/labs.html 实验内容 每个实验阶段&#xff08;共5个&#xff09;考察ELF文件组成与程序链接过程的不同方面知识 阶段1&#xff1a;全局变量 <-> 数据节 阶段2&#xff1a;强符…

丝滑!软件开发根本不需要会编码(看我10分钟应用上线)

目录 一、前言 二、低代码基础功能及搭建 设计组件丰富 连接数据源 工作流设计 三、低代码和敏捷开发如何协同工作&#xff1f; 一、前言 众所周知&#xff0c;开发一个大型的企业级系统&#xff0c;公司往往需要大量的人力做支持后盾&#xff0c;如需要需求分析师、数据库管理…

使用chatgpt过funcaptcha验证码1个人学习记录

funcaptcha 验证码1 记录 funcaptch 有好几种验证码 验证码1 验证码2 验证码3 … 好多好多 今日记录验证码一完成记录&#xff1a; 这种验证码貌似每几天就换动物了 现在发现如下几种 如何解决&#xff1f; 训练模型计算目标位置 下面是我训练的模型计算的结果&…

LeetCode912排序数组(快速排序机及其优化详解)

LeetCode912排序数组&#xff08;快速排序及其优化详解&#xff09; 文章目录 LeetCode912排序数组&#xff08;快速排序及其优化详解&#xff09;Abstract基本快速排序快速排序思路总结以及优化优化思路针对渐进有序数组针对相同元素较多的数组 Code参考文献 Abstract 我首先…

【Python 下载,Anaconda下载,环境变量配置,两个python不同版本使用环境变量配置切换】

我再下载Anaconda之前&#xff0c;自己安装了一个Python3.11.配置环境变量之后&#xff0c;查看python版本&#xff1a; 下载好Anaconda3之后&#xff0c;将环境变量提到之前的前面&#xff0c;再使用CMD,查看就是Anaconda自带的Python版本&#xff0c;该版本有就有很多的第三方…

大模型与人类的未来 | 基于认知神经科学的大模型论坛精彩回顾

导读 6 月 10 日&#xff0c;智源大会“基于认知神经科学的大模型论坛”召开&#xff0c;本次论坛邀请到了认知神经、脑科学领域非常有建树的专家&#xff0c;深度讨论大模型的能力与局限性&#xff0c;包括对未来人工智能发展方向的讨论。论坛主席是清华大学脑与智能实验室首席…

全网最牛最全Postman接口测试: postman设置接口关联,postman实现参数化

postman设置接口关联 在实际的接口测试中&#xff0c;后一个接口经常需要用到前一个接口返回的结果&#xff0c; 从而让后一个接口能正常执行&#xff0c;这个过程的实现称为关联。 在postman中实现关联操作的步骤如下&#xff1a; 1、利用postman获取上一个接口指定的返回值…

2023年5月青少年机器人技术等级考试理论综合试卷(五级)

青少年机器人技术等级考试理论综合试卷&#xff08;五级&#xff09; 分数&#xff1a; 100 题数&#xff1a; 30 一、 单选题(共 20 题&#xff0c; 每题 4 分&#xff0c; 共 80 分) 1.ESP32 for Arduino&#xff0c; 下列程序的运行结果是&#xff1f; &#xff08; &#x…

GAMES101笔记 Lecture05 光栅化1(Triangles)

目录 Perspective Projection(透视投影)Canonical Cube to Screen(从标准立方体到屏幕)What is a screen(什么是屏幕)? Rasterization: Drawing to Raster Displays(如何在光栅设备上画东西)Triangles - Fundamental Shape Primitives(三角形-基本形状的基元)Why triangles?&…

node从头到尾实现简单编译器

介绍 本文用node实现了一个简单的编译器mccompiler&#xff0c;主要用于学习&#xff0c;笔者能力和精力有限&#xff0c;如有不当&#xff0c;还请指出 原文地址&#xff1a;原文地址 项目地址&#xff1a;项目地址 本文涉及&#xff1a;编译器的词法分析&#xff0c;抽象语义…

应用程序传递数据给驱动和驱动操作LED灯

目录 1. 应用程序将数据传递给驱动 1.1. 函数分析 1.2. 编写驱动.c文件 1.3. 编写编译驱动的makefile文件 1.4. 执行make命令&#xff0c;并安装驱动&#xff0c;生成设备文件 1.5. 写应用层.c文件 1.6. 执行可执行文件验证 2. 驱动操作LED灯 2.1. 函数分析 2.2. 手册…

【C语言】第一个C语言项目——“猜数字”游戏(内附源码)

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello米娜桑&#xff0c;这里是君兮_&#xff0c;今天又抽空为大家更新我们的主线0基础C语言啦&#xff01;鉴于最近讲解了非常多的选择语句与循环语句&#xff0c;咱们今天就来讲讲两者结合的一个简单的实战应用。 同时…

Python Locust全过程使用代码详解

下方查看历史精选文章 重磅发布 - 自动化框架基础指南pdfv1.1大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 Python locust 是一个基于 Python 的开源负…

MKS SERVO4257D 闭环步进电机_系列9 上位机通讯示例

第1部分 产品介绍 MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口&#xff0c;支持MODBUS-RTU通讯协议&#xff0c;内置高效FOC矢量算法&#xff0c;采用高精度编码器&#xff0c;通过位置反馈&a…

视觉SLAM十四讲——ch13实践(设计SLAM系统)

视觉SLAM十四讲——ch13的实践操作及避坑 1. 实践操作前的准备工作2. 实践过程2.1 运行测试程序2.2 运行00数据集2.3 更改代码画出运动轨迹 3. 遇到的问题及解决办法3.1 cmake ..时出现的问题3.2 make时出现的问题3.3 头文件下红色报错 1. 实践操作前的准备工作 下载Kitti数据…

使用dat.gui更改three.js中的物体变量

一、dat.gui介绍 gui是一种JavaScript库&#xff0c;用于创建可视化控件和调试工具。它是dat.gui的简称。dat.gui是一个用于在Web应用程序中创建可定制GUI的JavaScript库。它可以轻松创建滑块、复选框、颜色选择器等控件&#xff0c;用户可以直接在GUI上进行交互和调整。dat.g…

一起来看看 K-verse LAND 销售活动中的合作伙伴给大家的祝福吧~

K-verse 是 The Sandbox 中的韩国内容主题空间&#xff0c;自去年 12 月首次推出以来&#xff0c;已吸引多家合作伙伴加入。此外&#xff0c;现有的合作伙伴公司和品牌正在积极准备以新的形式展示元宇宙内容。 这里有着许多可能性&#xff0c;K-verse LAND 销售活动是不是让你们…

Tomcat及项目部署

一、Tomcat是什么&#xff1f; Tomcat 是基于 Java 实现的⼀个开源免费, 也是被⼴泛使⽤的 HTTP 服务器。 二、下载安装 官⽅⽹站&#xff1a;https://tomcat.apache.org/ 选择其中的 zip 压缩包, 下载后解压缩即可. 解压缩的⽬录最好不要带 "中⽂" 或者 特殊符号…

vue-cli 如何修改默认环境变量名称

比如想要修改开发环境 NODE_ENV 的默认值 &#xff1f; 1. 新建文件 .env.development 2. 在 packjson.json 的 script 中添加一行代码 --mode [文件 env 后面的环境名称] "dev": "vue-cli-service serve --mode development", 3. 然后 npm run dev 环境变…