VUE之proxy配置实现跨域

什么是跨域

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

同源策略:是由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.hqwc.cn/news/111679.html

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

相关文章

SQL Server 日期范围按每月一行拆分

要将 SQL Server 中的日期范围按每月一行拆分,可以使用一个表值函数(Table-Valued Function)来生成日期范围内的月份,并将其与其他数据连接,以创建包含每月一行的结果集。 以下是一个示例,说明如何实现这一…

c++ decltype()的两个特殊情况

我们对里面这一行反汇编: 很诡异的左值引用。提供了这么违反感觉的语法,可能是为了语法完备性,但不直观。

【基本数据结构 三】线性数据结构:栈

学习了数组和链表后,再来看看第三种线性表结构,也就是栈,栈和后边讲的队列一样是一种受限的线性表结构,正是因为其使用有限制,所以对于一些特定的需要操作可控的场合,受限的结构就非常有用。 栈的定义 我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也…

Java8中判断一个对象不为空存在一个类对象是哪个

Java8中判断一个对象不为空存在一个类对象是哪个? 在Java 8中,你可以使用java.util.Optional类来处理可能为空的对象。Optional类可以帮助你优雅地处理空值情况,而不需要显式地进行空值检查。 这是一个简单的Optional示例: imp…

Matlab中关于 : 的使用

设,mat 这个矩阵的规格是 n*m,temp mat( i , j ) 矩阵的行和列的下标从1开始 在这个矩阵中,a:b 代表的含义是范围是从 a--b 则,当 a 和 b 被省略时,代表的范围就是最大范围(1--n) or &#…

竞赛选题 基于深度学习的人脸性别年龄识别 - 图像识别 opencv

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计…

通过RSYNC在linux和windows间同步文件

通过RSYNC在linux和windows间同步文件 下载windows版本rsync下载后是一个zip的压缩包,直接解压就可使用配置windows到linux的秘钥拷贝公钥文件到linux服务器,实现免密配置同步命令结合windows计划任务实现定时同步文件 下载windows版本rsync 下载链接 h…

后端中间件安装与启动(Redis、Nginx、Nacos、Kafka)

后端中间件安装与启动 RedisNginxNacosKafka Redis 1.打开cmd终端,进入redis文件目录 2.输入redis-server.exe redis.windows.conf即可启动,不能关闭cmd窗口 (端口配置方式:redis目录下的redis.windows.conf配置文件,…

MV*结构的发展

一,MVC Model模型,View视图,Controller控制器 理解: MVC就是将最原始的繁琐流程进行模块化,Model负责从数据库取数据,View负责展示获取的数据,用户在View进行操作,Controller处理…

Android13 通知栏和设置显示中添加副屏亮度条,调节副屏亮度

由于台式的Android设备,存在着两个屏幕显示的情况,故需要对Android系统开发一个可以调节副屏亮度的功能。 提交副屏亮度调节的效果如下: 涉及修改的文件如下: frameworks/base/services/core/java/com/android/server/am/Acti…

《PostgreSQL中的JSON处理:技巧与应用》

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: &#x1f4da…

【LeetCode-中等题】150. 逆波兰表达式求值

文章目录 题目方法一&#xff1a;栈 题目 方法一&#xff1a;栈 class Solution {public int evalRPN(String[] tokens) {Deque<Integer> deque new LinkedList<>();String rpn "-*/";//符号集 用来判断扫描的是否为运算符int sum 0;for(int i 0 ; i…