🌏Referer 与 Origin 是什么?(接口防盗链速查版)

3 阅读2分钟

在做接口防盗链或来源校验时,最常用的两个请求头就是 RefererOrigin。它们都用来告诉服务器:

👉 这个请求,是从哪来的

但两者作用相似、语义不同、可靠性也不同


一、Referer 是什么?

Referer 表示:

当前请求是从哪个页面跳转/发起的

它通常是一个 完整 URL

示例

Referer: https://www.example.com/page/detail?id=123

特点

  • 包含:协议 + 域名 + 路径(甚至参数)
  • 主要由 浏览器自动添加
  • 历史最悠久,兼容性最好

常见使用场景

  • 图片 / 视频 / 静态资源防盗链
  • 简单页面级来源校验

局限性

  • ❌ 可能被浏览器/插件裁剪或直接不发送
  • ❌ HTTPS → HTTP 时可能丢失
  • ❌ 很容易被脚本伪造

二、Origin 是什么?

Origin 表示:

发起当前请求的“站点源”

它只包含 协议 + 域名 + 端口,不包含路径。

示例

Origin: https://www.example.com

特点

  • 不包含路径,更“干净”
  • 主要用于 AJAX / fetch / 跨域请求
  • 是 CORS 机制的核心字段

常见使用场景

  • 接口防盗链
  • 接口跨域来源校验
  • API 来源域名白名单

局限性

  • ❌ 不是所有请求都有(如直接访问资源)
  • ❌ 同样可以被脚本伪造

三、Referer vs Origin 对比表

对比项RefererOrigin
表达含义请求来自哪个页面请求来自哪个站点
是否包含路径✅ 包含❌ 不包含
浏览器自动携带通常会主要在跨域/AJAX
适合场景资源防盗链接口防盗链
稳定性较弱较好
是否可伪造

四、实际工程建议(简单好用)

接口层建议顺序:

1️⃣ 优先校验 Origin

2️⃣ 如果 Origin 不存在,再校验 Referer

3️⃣ 两者都不存在:

  • 对资源接口 → 可拒绝
  • 对业务接口 → 结合鉴权/限流判断

五、一句话总结 🎯

Referer 看“从哪个页面来”,适合防资源盗用;
Origin 看“来自哪个站点”,更适合接口防盗链。

两者都只是“来源校验”,
不是安全边界,更不是防刷的核心手段。