uniapp的uni.request请求在浏览器H5和微信小程序都可以发送请求,真机和基座发送请求无效,解决方案

请求的时候会有各种各样的报错,比如下面等等,主要是 "errMsg":"request:fail abort statusCode:-1 看这个报错

16:11:19.304 [Vue warn]: Error in onLoad hook (Promise/async): "[object Object]"
16:11:19.342 (found at pages/index/index.vue:1)
16:11:19.363 {"errMsg":"request:fail abort statusCode:-1"}


{"errMsg":"request:fail abort statusCode:-1 不支持的URL(-1002)"} __ERROR

{"errMsg":"request:fail abort statusCode:-1 Failed to connet to localhost/127.0.0.1:8080

H5没问题的原因是用了代理,配置了跨域,所以没问题

proxy: {
            '/api': {
                target: 'http://101.xx.xx.xx:8090/',
                changeOrigin: true,
                rewrite: path => path.replace(/^\/api/, '')
            }
        }

但是我们并没有配置app的跨域问题,所以请求的时候把地址写全了,app端不要这个proxy就行了,下面针对h5和app做个兼容

1. 代理的地方,只配置h5的,h5走这个代理

 // #ifdef H5
    server: {
        proxy: {
            '/api': {
                target: 'http://101.xx.xx.xx:8090/',
                changeOrigin: true,
                rewrite: path => path.replace(/^\/api/, '')
            }
        }
    }
    // #endif

2. 请求封装的地方, h5及其他baseURL是接口前缀,如果是app,把baseURL配置成接口全地址就行

let baseURL = '/api';
// #ifdef APP-PLUS
baseURL = "http://101.xx.xx.xx:8090"
// #endif

3. 然后在请求的地方做个区分就好了

 uni.request({
            ...options,
            // #ifdef APP-PLUS
            url: baseURL + options.url,
            // #endif

            // 成功
            success(res) {
                
            },
            // 失败
            fail(err) {
               
            },
        })

4. 接口定义的地方还是正常用请求地址就行,比如api/user/info, 到3的app的请求url就是 

http://101.xx.xx.xx:8090/api/user/info

OK了,打包出的app也能请求接口了

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值