近日接到一些朋友的反馈说,在OSS控制台设置了防盗链,一直不生效。
经过沟通和查找,目前设置防盗链不生效的主要问题集中于视频和音频文件,在使用诸如windows media player,flash player等播放器后,在请求OSS资源的时候传递的Refer为空,这就造成防盗链的失效,不仅仅把别人防住了,也把自己给防住了。针对这种情况,我给出以下的解决办法,可以化解防盗链失效的问题。
既然没有了防盗链,那又如何防止别人盗链我们的资源呢?大致的思路是这样的,通过签名的url来防止资源被盗链。
1. 首先既然我们放弃了防盗链,那么我们一定要把bucket设置为Private,
2. 生成签名url,在播放其中引用签名url
如何生成签名url呢? 下面我们使用OSS PHP SDK为基础来说明。
require_once '../sdk.class.php';
$oss_sdk_service = new ALIOSS();
$bucket = 'xxxxxxxxxxxxx';
$object = 'xxxxx';
$timeout = rand(10,60); //单位秒
$response = $oss_sdk_service->get_sign_url($bucket,$object,$timeout );
var_dump($response); //输出结果
此时我们就生成了带有签名的url,把这个url放到播放器引用的位置即可。
如果有朋友对这个还有疑问,请直接跟帖!!!!!!!!!!!!!!1
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。