Skip to content

防盗链

基本概念

防盗链是指:防止别的网站直接引用你服务器上的资源(图片、视频、文件等),从而消耗你的带宽。

例如,A 网站图片地址是:

js
https://a.com/images/1.jpg

B 网站直接在页面中写:

js
<img src="https://a.com/images/1.jpg" />

用户访问 B 网站时,图片却从 A 网站服务器加载 —— 这就是“盗链”。

反盗链

浏览器请求资源时请求头会带上请求来源:

js
Referer: https://b.com/page.html

服务器可以判断:

  • 如果 Referer 是自己域名 → 允许
  • 如果不是 → 拒绝

Referer

Referer 是 HTTP 请求头中的一个字段,用来表示:当前请求是从哪个页面跳转或发起的。

受浏览器安全机制影响,Referer 属于 受保护请求头(Forbidden Header),浏览器禁止通过 JS 修改。

但是我们可以在服务器端更改Referer,服务器作为客户端去请求别人

警告

如果你是直接从地址栏访问该静态资源,那么这个请求的 Referer 会是空的。只有如果页面访问的静态资源才有Referer:

<img src="localhost:3000/assets/image.png" alt="Image">