Header不规范导致ERR_HTTP2_PROTOCOL_ERROR

问题现象描述

浏览器https请求应用连接后报:ERR_HTTP2_PROTOCOL_ERROR

  1. IE11浏览器正常
  2. Chrome内核浏览器全部报以上错误


    i浏览器错误页面

应用整个请求链路

浏览器->防火墙->F5->kong网关->F5->nginx->nginx

乱查一通

开发者工具看不到状态码,是一个ERROR。
由于新迁移了应用到接入出现该问题,找运维、网络、安全组同一起看调整了应用前面的各种配置仍然不好使。

认真重新排查

  1. 查看应用日志,有请求到后台并且处理也是成功的,响应也没有问题
    1.1 表明不是浏览器端发送时出现的问题
    1.2 表明不是浏览器端的请求被防火墙过滤了,和防火墙没有关系
  2. nginx上面有正常的请求日志,并且明确展示了状态码是200(通过nginx更证明了应用是正常返回了请求)
  3. 报了HTTP2相关的错误去查找相关的信息,里面有一条规则引起了注意HTTP2严格要求Header要按Http标准设置
  4. 排查代码发现有如下代码(Expires后面多一个空格)
response.addHeader("Expires ",String.valueOf(System.currentTimeMillis()));

解决办法

使用标准的Header-删除代码中多余的空格,搞定!!!

response.addHeader("Expires",String.valueOf(System.currentTimeMillis()));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。