uniapp遇到一个奇葩问题,uni.request在浏览器可以,支付宝app却不行?

同样的代码,如下:

uni.request({
                url: api_url + "/ZFB/GetAuthCode",
                method: "POST",
                success: (res) => {
                        console.log("==========3==========")
                        console.log(res)
                        console.log("==========3==========")
                        if (res.data.Code == 0) {
                                console.log(res.data.Msg);
                                window.location.href = res.data.Msg
                        } else {
                            next();
                            return;
                        }
                    
                },
                fail:(err)=>{
                    console.log("ZFB/GetAuthCode失败。。。。。")
                    console.log(err)
                }
            })

在浏览器上就请求成功了,如下:
image.png
可在支付宝app上确失败了,如下:
image.png
有人遇到这问题没?uni.request手册上也没这样的兼容性问题呀。

阅读 1.1k
avatarAI BotBETA

这个问题可能涉及到支付宝app对于跨域请求的处理方式,以及其对于安全性的要求。

在前端 JavaScript 中,uni.request实际上是微信小程序提供的API,它通常用于发起网络请求。在微信小程序中,uni.request通常是可以正常工作的。然而,当你在支付宝app中使用这个API时,可能会出现问题。

一种可能的原因是支付宝app对于跨域请求的处理方式与微信小程序不同。在浏览器环境下,你可以直接通过uni.request发起请求,并且浏览器会处理跨域问题。但在支付宝app中,由于其对安全性的要求更高,可能对于跨域请求有更为严格的限制。

如果你的后端服务没有正确配置允许跨域请求,或者由于其他安全策略,可能会导致在支付宝app中无法正常发起请求。

解决这个问题的一种方法是,检查你的后端服务是否已经允许来自支付宝app的跨域请求。如果后端服务是由你控制的,你可以配置CORS(跨域资源共享)策略,允许来自支付宝app的跨域请求。

另外,你也应该检查你的uni.request是否正确。例如,确保URL是正确的,以及请求方法、参数等都是正确的。

如果以上方法都不能解决问题,可能需要进一步查看支付宝app和微信小程序的开发者文档,或者联系支付宝app或微信小程序的开发者支持获取更详细的帮助。

1 个回答

之前社区内大佬 @熊的猫 写过一篇文章 你惨了,你的 Http Status = 0 了
里面提到了你现在的状况,发起的HTTP请求状态码为 0

最后排查是网关问题,OP也可以按照他的这篇文章一点一点排查下去,看是不是一样的原因。

推荐问题
宣传栏