视频文件放在对象存储,直接访问能播,嵌到文章页就 403,Referer 是站点域名,换成主站打开又正常。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
curl -I -e 'https://m.example.com/' https://cdn.example.com/v/clip.mp4 # 期望返回 200 而不是 403
对象存储开了防盗链,白名单只写了主域 www.example.com,文章页在 m.example.com 打开就被拒。播放器请求偶尔不带 Referer,同样会被拦。这一点先确认清楚,后面就不用反复试。
「视频防盗链」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
具体做法是,把移动站和裸域都加进白名单;允许空 Referer 或者改用签名 URL;用 curl 带不同 Referer 各测一次。
改完照着核一遍,移动站文章页视频正常播放,带空 Referer 直接访问也不返回 403。
