UNIAPP项目如何在HBuilder中设置跨域请求代理(uni.request)
遇到问题
今天在一个项目中,遇到了个很常见的前端跨域问题,这个项目是uniapp项目,没有vue.config.js。 于是上百度找资料,找到的都是类似这样的
"devServer" : {
"proxy" :{
"/api" :{
"target":"http://localhost:3000"
}
}
}
可我这里比较特殊,请求本身就带了 “http://localhost:端口号” 这一段字符串。
然后翻阅我本地以前的项目,得到了启示,最终解决了问题。
解决方法
详细操作如下
使用HBuilder打开UNIAPP项目
找到manifest.json文件,双击打开
在右侧界面中的左侧功能列表里面找到源码视图
双击打开,可以进行源码编辑
找到JSON格式的“h5”节点
再找到"h5"节点下的“devServer”节点
编辑内容如下
"devServer" : {
"https" : false,
"port": 8000,
"disableHostCheck":true,
"proxy" :{
"/api":{
"target":"http://localhost:3000",
"changeOrigin":true,
"secure":false,
"ws": true,
"pathRewrite": {
"^/api": "/api"
}
}
}
}
这里稍微解释一下:
port:8000 是要与本地前端程序启用的端口一致
"target":"http://localhost:3000" 这里的请求地址与后端请求地址一致
"^/api": "/api" 这部分是核心,把/api以及前面的所有字符,完全替换为/api
其他参数请大家自行查找相关资料,这里就不一一细说了。
经过处理后,请求的最终形式变成了 "http://localhost:3000/api/" + 接口路径
这样就正确访问到后端接口了。
问题解决完毕