ajax的statusText在http1.1和http2中的不同
2023-04-18 15:23:30 时间
问题
在服务端支持协议从http1.1升级到http2的时候,项目中正常的请求流程出现了错误,经排查是ajax封装代码使用xmlHttpRequest的statusText属性判断是否正常返回,进而导致错误,那么statusText属性在不同协议间发生了什么变化呢?
通过MDN文档(英文版本)查询到在http1.1中会返回一个字符串比如 OK
,Not Found
,而在 http2会返回一个空字符串
,所以项目中使用statusText作为判断依据的时候,出现错误就在所难免了。
实战测试
经过测试,在http1.1环境下,如果返回正常,chrome中xmlHttpRequest的statusText属性是一个字符串 OK
,如下图:
而在服务器升级到http2后,chrome和Firefox的表现又有不同,如果返回正常,chrome中xmlHttpRequest的statusText属性是一个空字符串,如下图:
如果返回正常,firefox在http1.1和http2中xmlHttpRequest的statusText属性都是是字符串OK
,如下图:
在上面的截图中其实还有fetch的例子,通过对比可以看到fetch中Response的statusText属性和xmlHttpRequest保持一致。
结论:不要在ajax和fetch中使用statusText作为是否正确返回的判断依据。
本文中的源代码:https://github.com/blank-x/pg/tree/master/ajax/statusText nodejs版本是v16.19.0
相关文章
- 还在死磕Ajax,不如看看Fetch ?
- 【ASP.NET Core】动态映射MVC路由
- 【ASP.NET Core】用配置文件来设置授权角色
- 【ASP.NET Core】按用户等级授权
- 【ASP.NET Core】自定义Session的存储方式
- 【ASP.NET Core】选项类的依赖注入
- 【ASP.NET Core】选项模式的相关接口
- 【ASP.NET Core】模型绑定:重命名绑定字段
- 【ASP.NET Core】配置应用程序地址的N多种方法
- 【ASP.NET Core】自己编程来生成自签名的服务器证书
- 【ASP.NET Core】设置 Web API 响应数据的格式——FormatFilter特性篇
- 【ASP.NET Core】设置Web API 响应的数据格式——Produces 特性篇
- 【ASP.NET Core】使用最熟悉的Session验证方案
- 【.NET 与树莓派】WS28XX 灯带的颜色渐变动画
- 【.NET 与树莓派】控制彩色灯带(WS28XX)
- 【.NET 与树莓派】MPD 的 Mini-API 封装
- 【ASP.NET Core】体验一下 Mini Web API
- 【.NET 与树莓派】用 MPD 制作数字音乐播放器
- 【.NET 与树莓派】气压传感器——BMP180
- 【.NET 与树莓派】温度/湿度传感器——SHT30