JavaScript 防盗链原理及通过 Referer 绕过的方法

作者:半夏时间:2026-10-24 06:59:53浏览:398

本文解析了基于 HTTP Referer 头的防盗链机制,指出服务器通过校验来源域名限制资源访问。针对 HTTPS 跳转 HTTP 时 Referer 被丢弃的安全策略,介绍了通过设置 meta 标签为 never 来绕过验证的方法,并展示了如何在浏览器开发者工具中查看相关请求头。

HTTP Referer 是请求头(Header)的一部分。当浏览器向 Web 服务器发送请求时,通常会携带 Referer 字段,告知服务器该请求是从哪个页面链接过来的。服务器利用这一信息获取源地址,以便进行后续处理。通过检查该字段的值,可以检测到访问目标资源的来源地址。

背景

此前在自学开发项目时,发现虽然项目中引用了线上存在的图片,但在本地项目中始终无法显示。

经过查阅资料发现,这是由于第三方网站设置了防盗链机制所致。

破解防盗链

首先说明防盗链的原理:在 HTTP 协议中,当用户从一个网页跳转到另一个网页时,HTTP 请求头字段中会包含 Referer 信息。

这里的“Referer”一词是由于历史原因导致的拼写错误,但此后一直沿用至今。

图片服务器通过检测 Referer 字段是否来自规定的域名,从而实现防盗链保护。

如果盗用网站使用的是 HTTPS 协议,而图片链接使用的是 HTTP 协议,

那么从 HTTPS 向 HTTP 发起的请求会因安全性规定而不携带 Referer,从而实现了防盗链的绕过。

官方在输出图片时,会判断来源(Referer),即确定是哪个网站在访问该图片。

如果是你的网站去加载这个图片,那么 Referer 字段的内容就是你的网站地址;

由于你的网站地址通常不在官方的白名单内,因此图片无法显示。

因此,如果不发送 Referer,即没有来源信息,官方服务器会认为这是从浏览器直接访问的,从而允许加载正常的图片。


<meta name="referrer" content="never">

例如,在掘金上查看我的一篇文章中一张图片的 Request Headers,就可以看到 Referer 字段。

背景

以上就是 JavaScript 防盗链的原理以及破解方法的详细内容,更多关于 JavaScript 防盗链的资料请关注本站其它相关文章!

作者最新文章