服务器返回401,定义认证方式,
header('www-Authenticate: Basic realm="login WebDav site"');
- 发布:2022-02-13 23:09
- 更新:2022-02-15 21:39
- 阅读:560
产品分类: HTML5+
HBuilderX版本号: 3.3.11
手机系统: iOS
手机系统版本号: iOS 13.1
手机厂商: 苹果
手机机型: iphone
打包方式: 云端
操作步骤:
预期结果:
XMLHttpRequest就能正常返回401。
XMLHttpRequest就能正常返回401。
实际结果:
XMLHttpRequest不能正常返回,XMLHttpRequest.readyState一直是处于2状态。
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+下这个问题会不会得到官方修复。
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/”);