Cloudflare Workers 实现防盗链图片的refer 的设置

6 min read

Cloudflare Workers 可以通过设置 referer 检查来防止图片盗链,以下是实现方式:

  1. 在 Cloudflare 控制面板中启用 Workers 功能。

  2. 创建一个新的 Workers 脚本,并复制以下代码:

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const referer = request.headers.get('Referer')
  const requestUrl = new URL(request.url)

  // 如果没有 referer,则返回 403 Forbidden 错误
  if (!referer) {
    return new Response('Forbidden', { status: 403 })
  }

  const refererUrl = new URL(referer)

  // 如果 referer 与请求 URL 的主机名不匹配,则返回 403 Forbidden 错误
  if (refererUrl.hostname !== requestUrl.hostname) {
    return new Response('Forbidden', { status: 403 })
  }

  // 允许访问原始图片
  const response = await fetch(request)
  return response
}
  1. 将该脚本保存并部署到 Cloudflare 应用程序。

  2. 现在在网站中嵌入图片时,需要在 img 标签中添加 Referer 信息,例如:

<img src="https://example.com/image.png" referrerpolicy="no-referrer">

这样可以确保浏览器不会泄漏 referer 信息,防止其他网站通过伪造 referer 窃取图片。