tencent cloud

文档反馈

自定义 Referer 防盗链

最后更新时间:2023-10-30 17:44:42
    Referer 防盗链技术是网站为了保护自己的资源,阻止其他网站非法引用其内容而采用的一种策略。该示例通过检查 HTTP 请求头中的 Referer 字段来判断请求来源,您可以灵活自定义改 Referer 的匹配规则,如果 Referer 不存在或者与允许的域名列表不匹配,边缘函数将拒绝请求并返回 403 状态码。
    async function handleRequest(request) {
    // 获取 Referer
    const referer = request.headers.get('Referer');
    
    // Referer 为空,禁止访问
    if (!referer) {
    return new Response(null, { status: 403 });
    }
    const urlInfo = new URL(request.url);
    const refererRegExp = new RegExp(`^https?:\\/\\/${urlInfo.hostname}\\/t-[0-9a-z]{10}\\/.*`)
    // Referer 不在白名单,禁止访问
    if (!refererRegExp.test(referer)) {
    return new Response(null, { status: 403 });
    }
    
    // 正常请求,访问 EdgeOne 节点缓存或回源
    return fetch(request);
    }
    
    addEventListener('fetch', event => {
    // 当函数代码抛出未处理的异常时,边缘函数会将此请求转发回源站
    event.passThroughOnException();
    event.respondWith(handleRequest(event.request));
    });

    示例预览

    在 PC 端与移动端的浏览器地址栏中输入匹配到边缘函数触发规则的 URL(如:https://example.com/images/ef-1.jpeg),即可预览到示例效果。
    HTTP 请求头 Referer 为 https://example.com/t-0123456789/page,边缘函数正常响应图片。
    
    
    HTTP 请求头 Referer 不在白名单,边缘函数识别为盗链并响应 403 状态码。
    
    
    

    相关参考

    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持