C***@163.com
C***@163.com
  • 发布:2020-01-03 17:57
  • 更新:2022-02-22 10:06
  • 阅读:3953

【已解决】uni.request在ios12版本及以下请求失败

分类:HTML5+

在H5端

uni.request 在 ios12及12以下版本中发起请求响应 ** [{ "errMsg": "request: fail"}]**
promise 走的 then 函数 并没有执行 catch

其他版本没问题 安卓也没问题

IDE运行环境说明

HBuilderX

[IDE版本号]

2.4.6.20191210

2020-01-03 17:57 负责人:无 分享
已邀请:
23234

23234 - 90后前端菜鸟

还有这个问题 ios13以上都都数据,ios12啥接口数据都拿不到。这个框架有些潜在的基本问题没有解决

  • DCloud_UNI_GSQ

    不是框架潜在问题,是跨域问题,麻烦看下其他人的回答和我的回答


    2020-11-23 16:13

  • 23234

    回复 DCloud_UNI_GSQ: 先说声抱歉,确实不是框架问题,我这边出现的根本原因主要是在ios12以下,cors 设置中Access-Control-Allow-Headers:*不好使,如果请求头含有sign字段,服务器需要在之前提到的地方放对应的自定义header


    2020-12-02 15:06

  • 3***@qq.com

    回复 8***@qq.com:请问解决了吗?


    2021-05-24 14:44

DCloud_UNI_GSQ

DCloud_UNI_GSQ

目前默认的封装不会走catch,具体见文档 https://uniapp.dcloud.io/api/README?id=promise-封装

  • gufe

    ios请求超过10秒 会自动终止 timeout 参数 不生效 是iOS有特殊写法码


    2020-07-09 13:55

DCloud_UNI_GSQ

DCloud_UNI_GSQ

关于请求失败的问题,可以试试HBuilderX 2.5.1

  • C***@163.com (作者)

    刚试了2.5.1版本 还是不行


    2020-01-04 22:02

  • C***@163.com (作者)

    请求是http请求


    2020-01-04 22:03

  • DCloud_UNI_GSQ

    回复 C***@163.com: 上传一个测试工程


    2020-01-06 11:02

  • C***@163.com (作者)

    回复 DCloud_UNI_GSQ: 我用原生xmlhttprequest监听了了进度 发现readyState执行到了4

    但是xhr的status却等于0 此现象只会在ios12版本及以下版本和微信客户端浏览器出现


    2020-01-06 11:25

  • DCloud_UNI_GSQ

    回复 C***@163.com: ios12版本及以下版本且微信客户端浏览器还是 ios12版本及以下版本或微信客户端浏览器?


    2020-01-06 11:44

  • C***@163.com (作者)

    回复 DCloud_UNI_GSQ: 两者都是同一个情况


    2020-01-06 12:11

  • DCloud_UNI_GSQ

    回复 C***@163.com: 使用非uni-app测试是否有此问题


    2020-01-06 17:12

  • C***@163.com (作者)

    回复 DCloud_UNI_GSQ: 非uniapp没有此问题


    2020-01-10 11:03

  • DCloud_UNI_GSQ

    回复 C***@163.com: 你不是说了原生xmlhttprequest也有问题么?


    2020-01-10 11:53

  • C***@163.com (作者)

    回复 DCloud_UNI_GSQ: 对啊 这就是我没法理解的地方了 我是在uniapp中用的原生xmlhttprequest 无法理解这样也有问题 您那边尝试了吗


    2020-01-10 13:44

  • DCloud_UNI_GSQ

    回复 C***@163.com: 我这测试没问题,原生xmlhttprequest不受uni-app影响,你尝试使用safari进行调试。


    2020-01-11 14:01

  • C***@163.com (作者)

    回复 DCloud_UNI_GSQ: 可否测试下请求中携带自定义头部这种情况


    2020-01-13 10:37

  • DCloud_UNI_GSQ

    回复 C***@163.com: 无论定义什么,原生xmlhttprequest不受uni-app影响


    2020-01-13 10:50

  • C***@163.com (作者)

    回复 DCloud_UNI_GSQ: 好的 我在排除下我们这边的问题


    2020-01-13 11:39

  • DCloud_UNI_GSQ

    回复 C***@163.com: 如果 iOS Safari 能复现,可以尝试使用 Mac Safari 调试


    2020-01-13 11:44

DCloud_UNI_GSQ

DCloud_UNI_GSQ

帮@365209373@qq.com 调试,报错如下,其他人也参考一下,百度即可找到答案

[Error] Request header field Authorization is not allowed by Access-Control-Allow-Headers.
[Error] XMLHttpRequest cannot load http://xxxx:26001/oauth/token due to access control checks.
[Error] Failed to load resource: Request header field Authorization is not allowed by Access-Control-Allow-Headers. (token, line 0)

iimeepo

iimeepo - 2264535743@qq.com

这个问题是跨域问题引起的,uni.request未捕获错误,配置好接口支持跨域即可解决。

3***@qq.com

3***@qq.com

这个是跨越报的错,看下你的跨越配置,是否是ngix反向代理,后台代码处理跨越不会有这个问题,如果是ngix看下跨越配置是否不对,反向代理是会有部分手机报跨越错误,后台代码处理不会有这个错误

嘿你好啊

嘿你好啊 - 嘿你好啊

后端或者nginx把跨域头配置一下就好了,上面有位老哥说的对,ios 12下的 webview 不能Access-Control-Allow-Headers:*

  • 嘿你好啊

    浏览器按F12查看接口请求的request headers,这里给个参考,直接复制应该就能用了

    Accept,

    Accept-Encoding,

    Accept-Language,

    Authorization,

    Connection,

    Content-Type,

    Host,

    Origin,

    Referer,

    Sec-Fetch-Dest,

    Sec-Fetch-Mode,

    Sec-Fetch-Site,

    User-Agent


    2021-01-19 20:44

用啥昵

用啥昵

问题可以解决了吗,我现在遇到的就是这个问题,ios12以下直接报request: fail,12以上可以调用,安卓可以,求解决方法

  • DCloud_UNI_GSQ

    其他人都解决了,是跨域问题,麻烦看下其他人的回答和我的回答


    2021-02-20 18:24

  • 3***@qq.com

    回复 DCloud_UNI_GSQ: 请问跨域要设置什么请求头?


    2021-05-24 15:09

3***@qq.com

3***@qq.com - yokea-app

请问怎么解决???急急急

鼠风和

鼠风和

请问怎么解决的,能说明一下嘛,谢谢

jacky888

jacky888

我在ios12版本,使用uni.request,也是直接出现request: fail,无法跟服务器通讯

  • DCloud_UNI_GSQ

    如果 iOS Safari 能复现,可以尝试使用 Mac Safari 调试


    2020-03-23 10:46

  • jacky888

    回复 DCloud_UNI_GSQ: 在Mac safari中使用没问题,只有在手机端,iPhone 6s,ios12.0.1版本就会有问题


    2020-03-23 10:50

  • DCloud_UNI_GSQ

    回复 jacky888: 我意思是用Mac safari调试,iOS手机的safari是使用Mac safari来进行远程调试的。如实在不会调试,有预览地址的话,我也可以帮忙。


    2020-03-23 10:54

  • jacky888

    回复 DCloud_UNI_GSQ: 预览地址已私信你


    2020-03-23 11:08

  • 用啥昵

    回复 jacky888: 可以解决了吗, 求方法,感谢


    2021-02-20 16:19

该问题目前已经被锁定, 无法添加新回复