uni-app:配置webpack代理,解决跨域问题

本文介绍如何在uni-app项目中配置webpack代理,解决跨域问题。通过设置manifest.json中的h5配置,包括路由模式为history,端口为9000,并在devServer下配置proxy代理,将/api请求转发到本地8080端口的mi服务。

uni-app:配置webpack代理,解决跨域问题

1、 打开项目文件manifest.json–>h5配置–>路由模式:history–>端口:9000

mode:设置路由的工作模式

  1. mode:‘hash’,哈希模式,默认值。
    路由地址栏一直带有一个#。#后面的内容无法被后台获取。
  2. mode:‘history’,历史模式。
    去掉路由地址中的#。历史模式必须在后台中进行设置。

端口:只要不与后台端口冲突就可以

2、uni-app官网–>框架–>配置–>manifest.json–>h5–>devServer–>devServer.proxy

就可以查看如何配置了,最终结果如下一步

3、返回项目文件manifest.json–>源码视图:
"h5" : {
        "router" : {
            "mode" : "history"
        },
        "devServer" : {
            "port" : 9000,
			"proxy": {
				"/api": {
				"target": "http://localhost:8080/mi",
				"pathRewrite": {"^/api" : ""}
				}
			 }
        }
    }
在本地进行前后端联合调试时,如果前端项目使用的是 `uni-app` 框架,可能会遇到问题。这是因为浏览器的安全机制限制了从一个源加载的文档或脚本发起请求到另一个不同的源。 ### 解决 uni-app 问题的方式 #### 1. **后台设置 CORS(推荐)** 最常见的解决方案是在服务器端配置允许资源访问 (CORS)。例如,在 Express.js 中可以添加如下代码: ```javascript const express = require('express'); const cors = require('cors'); const app = express(); // 允许所有来源的请求 app.use(cors()); app.get('/api/test', function(req, res) { res.json({ message: 'Hello World!' }); }); app.listen(3000, () => console.log('Server is running on port 3000')); ``` 如果需要更精细地控制哪些名可以访问,则可以在 `cors()` 函数中传入选项参数来指定具体的白名单地址、HTTP 方法等规则。 #### 2. **代理中间件** 当无法修改后端服务时,可通过前端开发环境下的反向代理解决问题Uni-app 支持通过 webpack 配置文件实现该功能。 打开项目的根目录下找到 `vue.config.js` 文件,并加入类似如下的内容: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:5000',// 后端接口的实际URL前缀 changeOrigin: true, pathRewrite: {'^/api':''} // 可选操作去除/api路径部分再转发给目标服务器处理 } } } }; ``` 然后将原本直接指向完整url的请求改为相对应的 `/api/*` 格式即可正常工作而无需担心问题。 #### 3. **JSONP 方案** JSONP是一种老式的绕过同源策略的方法,但它仅支持GET请求并且安全性较差,因此除非必要尽量避免采用这种方法。 --- 以上就是在 `uni-app` 开发过程中针对可能出现的情况的一些常规应对措施。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值