以前配置过vue vite 的代理转发,没想到在uniapp的代理转发下翻车了,其实是一个很小的问题。调试过程中,尝试了webpack、vite 等写法 在根目录下 创建了 vite.config.js vue.config.js 都不生效。

最后解决的方法是 Vue3 proxy 的规则,重写规则必须要放在跳转域名前,下面贴配置源码

请求端代码:

methods:{
getList(){
uni.request({
method:"POST",
header:{
"Content-Type":"application/x-www-form-urlencoded"
},
url:"/api.php/school/Slide/index",
data:{id:9},
success:(res) => {
console.log(res)
},
fail:(err) => {
console.log(err)
}
});
}
}

配置代理代码:

"devServer" : {
"proxy" : {
//配置代理服务器来解决跨域问题,uniapp不适用CORS方案和设置JSONP方案
"" : {
//重写规则,调试不写规则,就会默认进入映射域名,调试一定要先让它代理生效
"pathRewrite": {
"^" : ""
},
//映射域名
"target":"http://school.bjzjxf.com",
//是否跨域
"changeOrigin":true
}
},
"https" : false,
"port" : 3000
},

百度看大部分声明 vue2不存在这个问题。

接下来说下为什么会有跨域这个问题吧,很多人可能并不太理解。

首先前端 vue 是内置了node.js 映射了一个独立的运行环境,我本地的端口是3000,本地服务器默认IP是 127.0.0.1,调试页面的时候访问是 127.0.0.1:3000 这个域名。

那么跨域请求的API 接口,一般是放在云端服务器,例如:https://school.bjzjxf.com/api/api.php

触发跨域的条件是:

  1. 域名不同
  2. 端口不同
  3. 协议不同

对比就发现本地的域名和API的域名以上3点均不同,所以肯定会触发跨域(只要有一项不同都会触发跨域)

Referrer Policy:strict-origin-when-cross-origin  // 这个标识就是提示已经跨域请求了
然后为什么使用代理可以解决跨域问题,因为阻止跨域是浏览器的安全协议,防止API接口不合法调用的导致的安全问题。
使用代理就跳过了浏览器检测这块可以这么理解,相当于 静态的html Ajax请求第三方API也不会提示跨域,但是把这个html放到不同的服务器环境下去请求会提示跨域。
所以以下是别人说的话,然后理解我上面说的话。就会发现 只要有2个独立环境下,互相请求对方的接口都不合法,属于跨域。

uni-app 中 只有H5 会存在跨域, 小程序勾选不校验合法域名、web-view(业务域名)、TLS版来忽略跨域,APP不会存在跨域

最新文章

  1. S2SH+mysql-软件开发实际部署问题-8个小时后提示MYSQL数据库无法连接
  2. Node.js高效按行输出文件内容
  3. 经典功率谱估计及Matlab仿真
  4. CSS布局(下)
  5. Android学习网站
  6. RMAN_学习笔记2_RMAN Setup配置和监控
  7. (转) xcodebuild和xcrun自动化编译ipa包 笔记
  8. 【C++继承与派生之二】有子对象的派生类的构造函数
  9. 经典排序算法 - 归并排序Merge sort
  10. 关于input在li列表中居中显示
  11. dede list列表页和文章页分别使用if else
  12. updateXML 注入 python 脚本
  13. iOS日历控件
  14. js配置文件路径和项目目录文件夹位置的一致性
  15. margin-top / padding-top 的百分比 到底是多少?
  16. siege压力测试工具安装和介绍
  17. array 的方法
  18. 一种C#泛型方法在lua中表示的设计
  19. python反编译chm文件并生成pdf文件
  20. Ubuntu 16.04服务器 配置

热门文章

  1. PHP全栈开发(七):PHP与MySQL存储交互(2.插入、读取)
  2. 【python】Ubuntu中多条命令的运行
  3. 微信小程序专题(二)-----微信openid的获取
  4. 如何在IDEA中创建Module、以及怎样在IDEA中删除Module?
  5. 初始Vue、Vue模板语法、数据绑定(2022/7/3)
  6. vue中使用分页组件、将从数据库中查询出来的数据分页展示(前后端分离SpringBoot+Vue)
  7. 忘记了99乘法表啥样的了,python打印下看看
  8. 齐博x1标签之无刷新显示更多
  9. python基础类型,字符串
  10. 通过Jenkins,执行远程服务器的自动化脚本