問(wèn)題現(xiàn)象描述
瀏覽器
https請(qǐng)求應(yīng)用連接后報(bào):ERR_HTTP2_PROTOCOL_ERROR
- IE11瀏覽器正常
Chrome內(nèi)核瀏覽器全部報(bào)以上錯(cuò)誤
i瀏覽器錯(cuò)誤頁(yè)面
應(yīng)用整個(gè)請(qǐng)求鏈路
瀏覽器->防火墻->F5->kong網(wǎng)關(guān)->F5->nginx->nginx
亂查一通
開(kāi)發(fā)者工具看不到
狀態(tài)碼,是一個(gè)ERROR。
由于新遷移了應(yīng)用到接入出現(xiàn)該問(wèn)題,找運(yùn)維、網(wǎng)絡(luò)、安全組同一起看調(diào)整了應(yīng)用前面的各種配置仍然不好使。
認(rèn)真重新排查
- 查看應(yīng)用日志,有請(qǐng)求到后臺(tái)并且處理也是成功的,響應(yīng)也沒(méi)有問(wèn)題
1.1 表明不是瀏覽器端發(fā)送時(shí)出現(xiàn)的問(wèn)題
1.2 表明不是瀏覽器端的請(qǐng)求被防火墻過(guò)濾了,和防火墻沒(méi)有關(guān)系- nginx上面有正常的請(qǐng)求日志,并且明確展示了狀態(tài)碼是200(通過(guò)nginx更證明了應(yīng)用是正常返回了請(qǐng)求)
- 報(bào)了HTTP2相關(guān)的錯(cuò)誤去查找相關(guān)的信息,里面有一條規(guī)則引起了注意
HTTP2嚴(yán)格要求Header要按Http標(biāo)準(zhǔn)設(shè)置- 排查代碼發(fā)現(xiàn)有如下代碼(Expires后面多一個(gè)空格)
response.addHeader("Expires ",String.valueOf(System.currentTimeMillis()));
解決辦法
使用標(biāo)準(zhǔn)的Header-刪除代碼中多余的空格,搞定?。?!
response.addHeader("Expires",String.valueOf(System.currentTimeMillis()));
