8***@qq.com
8***@qq.com
  • 发布:2019-10-10 13:50
  • 更新:2021-05-31 23:48
  • 阅读:2606

【报Bug】uni.request()设置自定义header并跨域请求接口时在手机上无法请求接口且status code为0

分类:uni-app

详细问题描述

H5端在iOS 12.4、以及Android上存在标题所述问题,已确认服务端接口支持跨域,因为在mac端和手机端iOS13.1上、或者无自定义header时能正常请求获取数据,通过代理也可以实现请求
(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

[内容]

重现步骤

[步骤]
1、网站A通过uni.request()请求服务器B的接口
2、设置任意自定义header
3、iOS 12.4 ;HbuiderX v2.3.3
[结果]
无法正常请求,服务端无法收到请求,接口状态码 0,uni.request()返回错误提示request:fail
[期望]
能正常请求接口
[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]
HbuiderX v2.3.3
[IDE版本号]

[windows版本号]

[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]
uni-app H5
[运行端版本号]
iOS 12.4
[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]

[编译模式是老模板模式还是新的自定义组件模式?]
自定义组件模式

App运行环境说明

[Android版本号]

[iOS版本号]
iOS 12.4
[手机型号]

[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

联系方式

[QQ]
80383585

2019-10-10 13:50 负责人:无 分享
已邀请:
perCode

perCode

我也遇到这种问题,服务端接收不到自定义的header属性,比如tokenid,服务端已经开启跨域允许,header里边添加了自定义属性,在浏览器调试直接报跨域问题,在ios上不存在跨域问题,但是服务端不能获取header里的任意属性,有没有解决办法
const headers={'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'};
headers['tokenid']='2222';
await uni.request({
url: this.url,
data: data,
method: this.method,
dataType: "json",
header: headers,//{'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'},
success: (res) => {
uni.setStorage({
key: 'cutNet',
data: false,
success: function () {

                    }  
                });  
                let data = this.crypto ? AesDecrypt(res.data) : res.data;  
                if(data.action.result == '1001'){  
                    uni.showToast({  
                        icon: 'none',  
                        title: data.action.message,  
                        duration: 2000  
                    });  
                    setTimeout(()=>{  
                        router.replaceAll({ name: 'login' })  
                    },2000)  
                }  
                console.log(this.crypto ? AesDecrypt(res.data) : res.data, '----返回数据----')  
                resolve(this.crypto ? AesDecrypt(res.data) : res.data);  
            },
a***@an2.cn

a***@an2.cn

同样的问题,至今未解决

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