关于华为CDN开启HTTP2.0会导致多次请求访问源站的问题

oy4年前 (2022-04-18)测评体验2853

经过跟华为工程师确认,目前华为CDN存在开启HTTP2.0协议访问,在苹果手机下,会出现同时多次请求源站的情况导致部分业务场景失效。没错,就只是在苹果手机上复现此问题,安卓手机、浏览器正常。正因为如此笔者在半夜切换域名解析CDN厂商的时候未能做充分测试,导致了一大早用户侧出现大规模异常引发投诉 苹果手机从iphone6测试到iphone13均存在此问题!百度了好久也未找到原因,特记录在此,避免程序员同行们入坑


微信截图_20220418211700.png


总所周知,在开发微信页面,跳转到微信请求用户头像昵称授权的时候,跳转返回的URL会携带一个code,再用这个code去换取用户信息,而这个code是使用一次即失效的。


而华为云CDN在苹果手机下,会同一时间多次请求源站,导致后续请求的code是失效状态,出现程序异常。假设code可用时返回302代码跳转,失效时直接报500,那么在源站日志上会看到同一时间有多条请求,第一个302,然后都是500

17f7501add2622a3ddefe9.png


之前走了许多弯路,包括对苹果手机抓包怀疑是苹果手机多次请求造成的,但是经过分析发现,发现也只是有一次请求,但是华为CDN侧却反馈苹果手机向CDN节点发出了多次请求?偶然间关闭了HTTP2.0就是正确的一次请求了,真实匪夷所思。解决办法:


1、在华为云CDN关闭HTTP2.0的功能,立即正常。经过测试,其他厂商阿里云腾讯云的HTTP2.0并不存在此问题


2、如果非要使用HTTP2.0,那么在程序中需要做防code重复兼容处理:

如果是一个新code,则存入redis缓存5s,同时进行下一步逻辑处理(换取用户头像昵称信息)并一同存入redis;

在短时间内发现同样的code的请求,如有上一步已获取到昵称头像,则直接返回redis缓存结果,如没有则进行5s监听等待再返回。不再请求微信服务器,去请求一定是返回code过期的错误码


还是希望华为CDN尽快改进吧,不仅是在技术上,也更希望丰富完善更多功能,比如暂时还不支持ipv6,不支持自定义的500错误页、无QPS频次控制等功能的缺失,仅能作为一个基础缓存静态文件的CDN使用还是太过于基础了

相关文章

10秒轻松破解Word Excel打开密码!

10秒轻松破解Word Excel打开密码!

当我在写这篇文章的时候,我表示非常的有压力,因为我找到了一个这样的软件,几乎可以破解任何强度的密码,而且只需要不到10秒!下载它之后,打开软件,点击“文件名”后的“打开”按钮,选择加密的文件,然后按下…

中国移动WiFi体验测评

中国移动WiFi体验测评

由于目前中国移动WiFi方式接入非常的方便,只要在有热点的地方,有一个移动手机号码,就可以登陆中国移动WiFi网络了,不需要像中国电信一样跑到营业厅办理账号等繁琐手续。而且上网也非常的便宜,不包月的话…

电信3G无线网络+华为EC122测评

电信3G无线网络+华为EC122测评

因频繁出差需要,笔者也跑去办个无线上网,可是3G这么多,设备也五花八门,谈及资费选择那更是层出不穷。关于3G的选择中国的3G网络还是以中国电信、中国联通、中国移动三大运营商为主,移动的3G网络不在考虑…

电脑中文发音,语音朗读的几种方法

电脑中文发音,语音朗读的几种方法

主要有以下几种方法:一、电脑自带朗读引擎在控制面板里有,这里就不多说了。比较鸡肋,没有太多实际的作用。如果要将计算机朗读的声音导出MP3等格式,那就要借助电脑内录相关软件方法了。 二、网站在…

使用Thinkphp6开发api性能测试

使用Thinkphp6开发api性能测试

tp6号称为api开发而生,那么笔者今天就来测试一下这款tp6性能如何最开始接触thinkphp是在3.2的版本,后续又用到了5.0来开发应用,总体来说还是比较方便的虽然Laravel框架近年来非常的…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。