老向
老向
  • 发布:2022-02-13 23:09
  • 更新:2022-02-15 21:39
  • 阅读:560

【报Bug】H5+ XMLHttpRequest 在ios系统下,当返回401时不能正确处理。

分类:HTML5+

产品分类: HTML5+

HBuilderX版本号: 3.3.11

手机系统: iOS

手机系统版本号: iOS 13.1

手机厂商: 苹果

手机机型: iphone

打包方式: 云端

操作步骤:

服务器返回401,定义认证方式,
header('www-Authenticate: Basic realm="login WebDav site"');

预期结果:

XMLHttpRequest就能正常返回401。

实际结果:

XMLHttpRequest不能正常返回,XMLHttpRequest.readyState一直是处于2状态。

bug描述:

发现在IOS 系统下,
XMLHttpRequest求请,服务器返回401时!如果头定义了认证方式,
header('www-Authenticate: Basic realm="login WebDav site"');
就不能正确处理,XMLHttpRequest求请不返回。XMLHttpRequest.readyState一直是处于2状态。

如果服务端不输出认证方式头部。header('www-Authenticate: Basic realm="login WebDav site"')
XMLHttpRequest就能正常返回401。
uniapp下没有测试有没有这个问题。

在安卓系统下不存在这个问题。
不知道H5+下这个问题会不会得到官方修复。

2022-02-13 23:09 负责人:无 分享
已邀请:
FullStack

FullStack - 【插件开发】【专治疑难杂症】【ios上架、马甲包、白包、过审、已成功上架过几百个】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=22130】【非诚勿扰】QQ:543610866

提供可以复现的demo,方便排查

老向

老向 (作者)

给你一个请求地址:https://044079070800080e0ad1.aihinet.com/
JS代码如下:

function Chklogin(Chkretun,ChkloginUrladdr) {
var ChkXMLHttpRequest = new plus.net.XMLHttpRequest();
ChkXMLHttpRequest.timeout = 3000;
ChkXMLHttpRequest.onreadystatechange = function() {
switch (ChkXMLHttpRequest.readyState) {
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
Chkretun(ChkXMLHttpRequest.status);
break;
}

}
ChkXMLHttpRequest.open("GET",ChkloginUrladdr);
//console.log(JSON.stringify(ChkloginUrladdr));
ChkXMLHttpRequest.send();
};
cklan = function(Result) {
console.log(Result);
//此处处理返回数据
};
Chklogin(cklan,“https://044079070800080e0ad1.aihinet.com/”);

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