现在使用的开发框架是thinkPHP6
想实现类似 阿里云oss 文件存储的 防盗链功能。
就是比如 我在网站里面 上传了 一个 3.jpg \ 4.mp4 \ 5.rar 3个文件。
想实现这样的控制,比如 只有 3 。com bd .com 这个的域名请求才能访问。非允许的就拒绝访问。
如果各位朋友,刚好有做过类似的,或者有想法的,劳烦您的小手回复一下。谢谢了。
现在使用的开发框架是thinkPHP6
想实现类似 阿里云oss 文件存储的 防盗链功能。
就是比如 我在网站里面 上传了 一个 3.jpg \ 4.mp4 \ 5.rar 3个文件。
想实现这样的控制,比如 只有 3 。com bd .com 这个的域名请求才能访问。非允许的就拒绝访问。
如果各位朋友,刚好有做过类似的,或者有想法的,劳烦您的小手回复一下。谢谢了。
该回答内容部分引用GPT,GPT_Pro更好的解决问题
使用ThinkPHP 6实现OSS文件盗链控制,可以借助阿里云OSS的Referer白名单功能实现,该功能可以指定哪些Referer地址可以访问OSS中的文件。具体的步骤如下:
在thinkPHP 6应用中安装阿里云OSS SDK,用来调用阿里云OSS的API。
创建阿里云OSS存储空间,并上传文件。
使用阿里云OSS SDK调用putBucketReferer API设置Referer白名单,将允许访问的域名添加到白名单中。
在应用中使用getObject API来获取文件,如果当前请求的Referer不在白名单中,则会返回403 Forbidden。
以下是使用ThinkPHP 6实现OSS文件盗链控制的代码示例:
// 引入阿里云OSS SDK
use OSS\Core\OssException;
use OSS\OssClient;
// 配置阿里云OSS的相关信息
$accessKeyId = "yourAccessKeyId"; // AccessKeyId
$accessKeySecret = "yourAccessKeySecret"; // AccessKeySecret
$endpoint = "yourEndpoint"; // 节点地址, 例如: oss-cn-hangzhou.aliyuncs.com
$bucket= "yourBucketName"; // Bucket名称
// 创建OssClient实例
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
// 设置Referer白名单, 允许3.com、bd.com访问存储空间中的文件
$refererList = array('http://3.com', 'http://bd.com'); // 白名单列表
$allowEmptyReferer = false; // 是否允许空Referer, 默认不允许
try {
$ossClient->putBucketReferer($bucket, $refererList, $allowEmptyReferer);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
// 获取文件, Referer不在白名单中则返回403 Forbidden
try {
$content = $ossClient->getObject($bucket, $object);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
如果回答有帮助,望采纳。