在uni内使用代理解决跨域
使用uniapp 进行调试对接时有时候会遇到跨域问题;尝试使用ngnix代理服务后,发现uni编译后,访问时存在编码等问题,解决起来比较麻烦,所以找到了uni自带的代理服务。
在uni根目录下manifest.json中切换到源码视图,然后在根节点下添加以下代码
"h5" : { "devServer" : { "port" : 8083, "disableHostCheck" : true, "proxy" : { "/api" : { "target" : "http://47.92.113.152:7583", "changeOrigin" : true, "secure" : false, "pathRewrite" : { "^/api" : "/umcp" } }, "/file" : { "target" : "http://47.92.113.152:7580", "changeOrigin" : true, "secure" : false, "pathRewrite" : { "^/file" : "/rygl" } } } } }
配置修改后需要重启服务。
当上方代理设置完成后,请求路径的写法
sServer = '/api/'; // 反向代理
reqUrl=sServer+'sso/user/get';//接口路径
// 浏览器会将reqUrl转换为http://localhost:8083/api/sso/user/get
这样当我们进行请求时
浏览器会将
http://localhost:8083/api/
其中'http://localhost:8083'解析成配置项的 proxy中对应'/api'模块的traget路径'http://47.92.113.152:7583'
将代理模块'/api' 通过配置项中设置的pathRewrite,覆写为'/umcp'