微信网页音频播放遇到的坑(referer防盗链)

最近做微信网页开发,遇到音频问题。方案是在微信网页中,判断用户有收听权限的情况下,让他可以播放音频。在HTML中用了audio标签,用少量js代码控制播放。mp3文件来源是托管在阿里云cdn上面的。

昨天上午刚刚把cdn部署好,测试访问没问题。昨天晚上将带有音频播放功能的网页给用户开放,结果很多用户反应打开不了。明明自己在安卓、苹果上面都测试过了,怎么回事呢。一开始以为是mp3文件的比特率问题。到最后发现不是,后来抱着试试看的心理,清除了cdn里面的防盗链设置

,允许referer为空(在阿里云cdn是有一个“允许直接在浏览器中访问”的选项),结果就好了。

由于也是刚刚用阿里云cdn,就提了工单,请阿里云技术人员协助。通过分析日志,发现有部分安卓用户的访问时返回403码,表示禁止访问,这部分的请求,其referer就是为空,其UA的信息举例如下:

“stagefright/1.2 (Linux;Android 5.1.1)”

“Samsung SM-N9005 stagefright/Beyonce/1.1.9 (Linux;Android 5.0)”

“Mozilla/5.0 (Linux; Android 4.4.4; A31 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036215 Safari/537.36”

更有甚者,部分访问的UA信息为空。

而大部分用iphone的基本都成功,UA信息如下:

“Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13E238 MicroMessenger/6.3.15 NetType/WIFI Language/zh_CN”

用电脑版微信的:

“Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat”

本来以为所有安卓都有问题,但居然发现部分华为机型是成功的:

“Mozilla/5.0 (Linux; Android 5.1.1; HUAWEI P8max Build/HUAWEIDAV-703L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile MQQBrowser/6.2 TBS/036215 Safari/537.36 MicroMessenger/6.2.5.51_rfe7d7c5.621 NetType/WIFI Language/zh_CN”

同时呢,也发现少数iPhone用户的referer为空,这下有点复杂了。

杯具的是,本人测试时候正好就是用的是一款华为,正好可以播放。。。。

附别人的帖子: http://www.anyv.net/index.php/article-167718

http://www.shangxueba.com/jingyan/103262.html

作者: Ben

IT、电商、零售、医药行业混迹多年的理想主义者。