当前位置: 首页> 最新文章列表> 如何利用 header() 实现浏览器跳转时的防盗链机制?

如何利用 header() 实现浏览器跳转时的防盗链机制?

M66 2025-06-12

防盗链机制是指防止其他网站直接引用你网站的资源,比如图片、视频、文件等,来避免资源被盗用。在 PHP 中,利用 header() 函数进行浏览器跳转时,可以实现一个简单的防盗链机制。

防盗链的基本原理

当一个网站的资源(如图片、视频等)被其他网站直接引用时,可能会造成带宽浪费和资源滥用。为了防止这种情况,可以通过 HTTP 头部中的 Referer 字段来判断请求来源,从而决定是否允许该请求。

使用 header() 实现防盗链

header() 函数是 PHP 中用来发送原始 HTTP 头信息的函数。通过检查请求中的 Referer 字段,我们可以判断请求是否来自合法的来源网站。如果不合法,我们可以通过 header() 函数来做出相应的处理,如重定向到其他页面或拒绝访问。

代码示例

<?php
// 获取请求中的 Referer 字段
$referer = $_SERVER['HTTP_REFERER'];

// 定义合法的来源域名
$allowed_domain = 'm66.net';

// 检查 Referer 是否包含合法的域名
if (strpos($referer, $allowed_domain) === false) {
    // 如果 Referer 不合法,跳转到一个拒绝页面
    header('Location: https://m66.net/403.html');
    exit;
} else {
    // 如果 Referer 合法,允许访问资源
    // 可以在这里执行资源输出等操作
    echo "欢迎访问我的资源!";
}
?>

代码解析

  1. $_SERVER['HTTP_REFERER'] 用来获取请求中的 Referer 字段,通常这个字段会包含请求来源的 URL。

  2. 使用 strpos() 函数检查 Referer 字段中是否包含允许的域名(m66.net)。如果包含该域名,说明请求是从合法来源发起的。

  3. 如果 Referer 不合法,则使用 header('Location: https://m66.net/403.html') 来重定向到一个 403 错误页面,表示禁止访问。

  4. 如果请求合法,则允许访问资源并输出欢迎信息。

注意事项

  • Referer 字段并不是每个请求都会带上,尤其是在一些隐私保护较强的浏览器或用户设置了禁止发送 Referer 的情况下,防盗链机制可能无法完全生效。

  • 这种防盗链机制依赖于 Referer 字段,因此并不百分百安全。如果要增强安全性,还可以结合其他机制,如签名验证、IP 白名单等。