背景:

1、项目中的nginx由http1.1改造为http2,

2、代码中采用axios的interceptors做统一返回处理,对于系统逻辑性错误弹窗(例如:表单字段唯一性校验弹窗提示)

现象:

1、在Chrome中打开,Http2中所有的弹窗失效

2、Http1.1中正常

猜测是拦截部分的代码没有执行,

axiosInstance.interceptors.response.use((response) => {
  if (response.status === 200 && response.statusText === 'OK') {
    const appData = response.data;

    if (appData && appData .resultCode) {

    ...  // 后续处理逻辑省略

期中这里的判断 status应该不会变,appData是后台返回的json数据应该也不会变,猜测是statusText有问题。

打开Chrome浏览器console,果然在Http2下response.statusText是""

百度,Google一下...。 嘿嘿

stack overflow上有类似问题

https://stackoverflow.com/questions/42401795/with-http-2-only-xmlhttprequest-responses-statustext-property-seems-to-be-us

大意是 statusText 会随着浏览器的变化而变化

Http2:Chrome (56.0.2924.87):

{
  status: 200,
  statusText: "", // empty
  config: {...},
  data: {...}
}

Http2:Firefox (51.0.1):

{
  status: 200,
  statusText: "OK", // as http1.1 (+1)
  config: {...},
  data: {...}
}

Http2:Safari (10.0.3):

{
  status: 200,
  statusText: "HTTP/2.0 200", // ?!
  config: {...},
  data: {...}
}

下面是Chrome浏览器依赖的chromium团队关于这个问题的讨论:

https://bugs.chromium.org/p/chromium/issues/detail?id=475223

大概意思就是http2默认返回头没有statusText,在http1.1中statusText也不是必须的
他们最后讨论不加statusText,不要像firefox一样给默认加上statusText,以免造成误解

结论:Http2中不要用statusText,除非你在服务器给加上这个返回头

Http2改造实践:statusText丢失问题的更多相关文章

  1. Flutter混合工程改造实践

    背景 6月下旬,我们首次尝试用Flutter开发AI拍app.开发的调研准备阶段没有参考业界实践,导致我们踩到一些填不上的坑.在这些坑中,最让我感到棘手的是Flutter和原生页面混合栈管理的问题. ...

  2. ecmall 中Url体系改造实践

    前面有过一篇ECMall 中URL体系的改造思路http://www.cnblogs.com/x3d/p/3627260.html 这两天基于这个思路,做了实践. 为什么要改造? ECMall是完整的 ...

  3. 车联网服务non-RESTful架构改造实践

    导读 在构建面向企业项目.多端的内容聚合类在线服务API设计的过程中,由于其定制特点,采用常规的restful开发模式,通常会导致大量雷同API重复开发的窘境,本文介绍一种GraphQL查询语言+网关 ...

  4. 罗辑思维首席架构师:Go微服务改造实践

    转自:http://www.infoq.com/cn/news/2018/05/luojisiwei 方圆 曾先后在 Cisco,新浪微博从事基础架构研发工作.十多年一直专注于后端技术的研发,在消息通 ...

  5. 服务化改造实践 | 如何在 Dubbo 中支持 REST

    什么是 REST REST 是 Roy Thomas Fielding [[1]](#fn1) 在 2000 年他的博士论文 [[2]](#fn2) “架构风格以及基于网络的软件架构设计” 中提出来的 ...

  6. 让互联网更快:新一代QUIC协议在腾讯的技术实践分享

    本文来自腾讯资深研发工程师罗成在InfoQ的技术分享. 1.前言 如果:你的 App,在不需要任何修改的情况下就能提升 15% 以上的访问速度,特别是弱网络的时候能够提升 20% 以上的访问速度. 如 ...

  7. 微信技术分享:微信的海量IM聊天消息序列号生成实践(算法原理篇)

    1.点评 对于IM系统来说,如何做到IM聊天消息离线差异拉取(差异拉取是为了节省流量).消息多端同步.消息顺序保证等,是典型的IM技术难点. 就像即时通讯网整理的以下IM开发干货系列一样: <I ...

  8. 微信团队原创分享:iOS版微信的内存监控系统技术实践

    本文来自微信开发团队yangyang的技术分享. 一.前言 FOOM(Foreground Out Of Memory),是指App在前台因消耗内存过多引起系统强杀.对用户而言,表现跟crash一样. ...

  9. 腾讯技术分享:GIF动图技术详解及手机QQ动态表情压缩技术实践

    本文来自腾讯前端开发工程师“ wendygogogo”的技术分享,作者自评:“在Web前端摸爬滚打的码农一枚,对技术充满热情的菜鸟,致力为手Q的建设添砖加瓦.” 1.GIF格式的历史 GIF ( Gr ...

随机推荐

  1. Intellij Idea配置说明(从Eclipse转Idea)

      1.idea的字体大小设置 字体大小设置的方法: 进入Settings>>Editor>>Colors&Fonts>>Font,改变Size大小. 2. ...

  2. Android项目导入工程Module

    在Android开发过程中,我们经常引用一些模块,或者自己封装好的Project.在Android Studio某个项目是可以引入多个Module的.这样导入Module的好处方便对源码修改以适合自己 ...

  3. Java 9 揭秘(16. 虚拟机栈遍历)

    Tips 做一个终身学习的人. 在本章中,主要介绍以下内容: 什么是虚拟机栈(JVM Stack)和栈帧(Stack Frame) 如何在JDK 9之前遍历一个线程的栈 在JDK 9中如何使用Stac ...

  4. PhpStrom如何安装主题?(总结三种不同格式安装方法)

    在网上搜了很多都是不怎么齐全的方法,在这里我总结一下PhpStrom的三种不同格式的安装方法,以后就不用再去网上搜直接看我自己的博客就知道了.以下默认为Windows系统,Linux现在暂时还没更新. ...

  5. ubuntu下升级网卡驱动

    ubuntu下升级网卡驱动 无线局域网环境下,有个笔记本儿的无线经常断,而其它的终端都好好的,唯独它不行.所以想到检查和更新下无线网卡的驱动看看.以下是操作流程,记录一下. 阅读说明:##为标签, / ...

  6. 基于Windows环境下Myeclipse10.0下载安装破解及jdk的下载安装及环境变量的配置

    jdk的安装及环境变量的配置 1.安装JDK开发环境 附上jdk安装包的百度云链接 链接:http://pan.baidu.com/s/1mh6QTs8 密码:jkb6(当然自行去官网下载最好哒,可以 ...

  7. 简易 HTTP Server 实现(JAVA)

    该简易的J2EE WEB容器缺失很多功能,却可以提供给大家学习HTTP容器大致流程. 注:容器功能很少,只供学习. 1. 支持静态内容与Servlet,不支持JSP 2. 仅支持304/404 3. ...

  8. inet_ntoa将客户端的IP和port写入M…

    问题:inet_ntoa将客户端的IP和port写入MYSQL中的解决方法和遇到的问题

  9. 倒水问题(Fill,UVA 10603) lrj白书 p202

    看着lrj的代码自己敲了一遍,还没调试成功.... 有时间再进行完善 /* 状态start到各个状态u1,u2,u3..... 的倒水量分别为u1.dist,u2.dist,u3.dist.... * ...

  10. InputStreamReader读取文件出现乱码

    当你读取一个文本文件时,如果是在电脑记事本上面写的,然后保存.使用InputStreamReader读取出来,并且是按照他的编码格式读取出来,发现还是存在乱码,比如文本内容是“你好”,读出来显示是“? ...