在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'

posted @ 2020-11-16 15:33  butchersheep  阅读(1447)  评论(0编辑  收藏  举报