問題現(xiàn)象描述
瀏覽器
https
請(qǐng)求應(yīng)用連接后報(bào):ERR_HTTP2_PROTOCOL_ERROR
- IE11瀏覽器正常
Chrome內(nèi)核瀏覽器全部報(bào)以上錯(cuò)誤
i瀏覽器錯(cuò)誤頁面
應(yīng)用整個(gè)請(qǐng)求鏈路
瀏覽器
->防火墻
->F5
->kong網(wǎng)關(guān)
->F5
->nginx
->nginx
亂查一通
開發(fā)者工具看不到
狀態(tài)碼
程剥,是一個(gè)ERROR。
由于新遷移了應(yīng)用到接入出現(xiàn)該問題狰住,找運(yùn)維缨称、網(wǎng)絡(luò)、安全組同一起看調(diào)整了應(yīng)用前面的各種配置仍然不好使韭寸。
認(rèn)真重新排查
- 查看應(yīng)用日志货裹,有請(qǐng)求到后臺(tái)并且處理也是成功的哺壶,響應(yīng)也沒有問題
1.1 表明不是瀏覽器端發(fā)送時(shí)出現(xiàn)的問題
1.2 表明不是瀏覽器端的請(qǐng)求被防火墻過濾了氨距,和防火墻沒有關(guān)系- nginx上面有正常的請(qǐng)求日志桑逝,并且明確展示了狀態(tài)碼是200(通過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()));
解決辦法
使用準(zhǔn)備的Header-刪除代碼中多余的空格,搞定G稳谩@愣簟!
response.addHeader("Expires",String.valueOf(System.currentTimeMillis()));