防盗链(Hotlink Protection)是一种防止其他网站直接引用你的网站资源(如图片、视频、文件等)的技术。通过防盗链,可以保护你的服务器资源不被滥用,同时也可以避免带宽被无授权的第三方消耗。
在ThinkPHP中,可以通过中间件或控制器来实现防盗链功能。以下是一个基于HTTP Referer的防盗链实现示例:
app/middleware/HotlinkProtection.php
:<?php
namespace app\middleware;
use think\facade\Request;
class HotlinkProtection
{
public function handle($request, \Closure $next)
{
$referer = Request::header('Referer');
if (empty($referer) || strpos($referer, 'yourdomain.com') === false) {
return response('Hotlink Protection', 403);
}
return $next($request);
}
}
app/middleware.php
中注册中间件:<?php
return [
\app\middleware\HotlinkProtection::class,
];
<?php
namespace app\controller;
use think\facade\Request;
class ImageController
{
public function index()
{
$referer = Request::header('Referer');
if (empty($referer) || strpos($referer, 'yourdomain.com') === false) {
return response('Hotlink Protection', 403);
}
// 正常处理图片请求
}
}
原因:
解决方法:
原因:
解决方法:
通过以上方法,你可以在ThinkPHP中实现有效的防盗链功能,保护你的资源不被滥用。