前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DDoS案例:chrome无法访问https问题排查

DDoS案例:chrome无法访问https问题排查

原创
作者头像
缪应厅
修改2020-11-25 11:42:12
2.4K1
修改2020-11-25 11:42:12
举报

背景

我们经常会遇到https无法访问的问题,大部分时候根据浏览器的提示可以看出错误的原因,但是也有很多时候需要做进一步的排查。

问题说明

某公司xxx.yyy.zzz.com解析到高防无法访问问题排查,具体表现如下:

原因分析

1、排查高防转发规则配置及https配置问题,正常

2、绑定高防IP测试,发现chrome异常、firefox正常、ie正常、curl正常,chrome报错:ERR_SPDY_PROTOCOL_ERROR

3、搜索这个问题的原因,可能是header的错误,或者chrome的网络参数

准备收集chrome的网络日志

Chrome地址栏输入chrome://net-export/

点击:Start Over

继续点击Start Logging to Disk

保持tab不要关掉

保存日志文件到桌面的chrome-net-export-log.json

打开日志文件,可以看到临时文件写到了:C:\Users\etanmiao\AppData\Local\Temp\scoped_dir9988_4818

4、绑定host到a.b.c.d,chrome输入https://xxx.yyy.zzz.com/v3/js/dc,访问结束后,切回刚才的界面,点Stop Logging,再点击Show File

打开刚才保存的日志文件

搜索SDPY

可以看到日志报错

{"params":{"error":"Invalid character in header name.","header_name":"cache - control","header_value":"no-cache"},"phase":0,"source":{"id":236,"type":9},"time":"2956175","type":203},

{"params":{"description":"Could not parse Spdy Control Frame Header.","error_code":"1 (PROTOCOL_ERROR)","stream_id":1},"phase":0,"source":{"id":236,"type":9},"time":"2956006","type":196},

5、使用curl查看header的返回值

发现有2个Cache-Control ,但是有一个带了2个空格,就是它了

这里有个疑问,为什么直接访问源站可以,访问高防就不行,继续查

6、由于这个特性,chrome在http2不支持,但是客户源站是1,chrome看不到返回码,使用firefox分别绑定host和不绑定情况下测试,测试结果,绑定高防的:

不绑定高防的:

果然是http版本被更换了

【结论】

Chrome在http2的https环境下,SDPY协议对header带空格的头无法识别,导致无法访问,这个客户刚好命中了以下2种情况

①使用了类似add_header "Cache - Control" no-cache;的命令,添加了非标准头

②访问该网站的时候,是http2协议

解决方案

①让客户去掉非标准的Header

②高防的转发修改为1协议(由于默认使用http2,向下兼容,导致出现该问题)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 问题说明
  • 原因分析
  • 解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档