爱迪电脑

JWPlayer挂载到腾讯云CDN导致Ping请求403的解决方案

网站在挂载jwplayer之后,当前页面会使用javascript生成用户播放数据,并利用参数跟随的形式发送相应数据请求到服务端。

腾讯云CDN

问题实例

根据用户的反馈,其采用了源站: 腾讯对象存储 + 腾讯内容分发网络产品来组建了网站。referer 黑白名单、IP 黑白名单,鉴权配置等访问控制功能全都没有开启。

存储桶访问权限为:私有读写,数据通过了腾讯CDN私有存储桶来拉取数据,进行回源访问。

A访问方式正常

http://domain/ping.txt

B访问方式失败

ping.txt?h=1360882429&e=s&n=4421133731849307&aid=StevenAmes&=0&at=1&c=-1&ccp=0&cp=0&d=0&eb=0&ed=6&emi=1pzctbq1mkv0&i=0&lid=6go7pnr0fvso&lsa=read&mt=0&pbd=1&pbr=1&pgi=1girxu5af8u8&ph=0&pii=0&pl=641&plc=1&pli=1bw2tsld9y4r&pp=hlsjs&ppm=VOD&prc=1&ps=4&pss=1&pt=%E6%96%87%E8%BD%A9%20-%20Wind%20Flower%20(Music%20Video)%20-%20%E6%AD%A3%E5%A4%AA%E9%9F%B3%E4%B9%90&pu=https%3A%2F%2Fwww.shota.vip%2F%25E8%25A7%2586%25E9%25A2%2591%2F%25E9%259F%25B3%25E4%25B9%2590%2F%25E6%2596%2587%25E8%25BD%25A9WindFlower.html&pv=7.12.13&pyc=1&s=1&sdk=0&stc=1&stpe=0&t=%E6%96%87%E8%BD%A9-Wind%20Flower&tv=3.32.1&vb=1&vi=1&vl=100&wd=1140&cae=0&cct=0&cdid=jwp7&drm=0&ff=320&fsm=0&l=2&lng=zh&mk=hls&mu=https%3A%2F%2Fv1.liehuojun.com%2Fupload%2F202201%2FJHpwzy59gx07T0OqXnW001041204852.m3u8&pcp=0&pd=2&pdr=https%3A%2F%2Fwww.shota.vip%2F%25E8%25A7%2586%25E9%25A2%2591%2F%25E9%259F%25B3%25E4%25B9%2590%2Findex.html&pr=1&q=16&sp=0&strt=320&tb=10.2&tt=0&vd=233&vs=4&sa=1648366422466

检查用户的腾讯云存储桶得知,在存储桶的自定义CDN加速域名中,默认开启了回源鉴权,导致了B访问方式的403错误。因为jwplayer的ping数据中,包含了和腾讯云CDN回源鉴权的冲突数据。

腾讯云CDN,如果启用CDN回源,则不需要URL中携带签名,也无需设置桶权限为公有读。如果开启了私有访问,那么签名鉴权会覆盖CDN鉴权。

解决方案

在存储桶为私密的情况下,关闭CDN的鉴权(存储桶的所有文件都必须附带签名才能访问),让用户每次的访问都使用程序来生成临时的用户访问地址,并在此地址中附加上jwplayer的用户播放数据。此方案需要改动的地方比较多,因此不推荐。

其次,就是在腾讯云存储桶开启CDN鉴权的情况下,单独设置ping.txt文件的访问权限为:公有读私有写 即可。

作者: 丁程

Pubdate: 2022-3-27 16:30