最近我的个人博客遇到一件糟心事——某天查看服务器日志,发现图片请求量暴增3倍!顺着访问记录查下去,结果发现十几个营销号网站居然直接盗用我的图片链接。每月几十G的流量就这么白白浪费,气得我连夜研究出这套SpringBoot防盗链方案,亲测有效!
一、防盗链是什么?为什么你的网站需要它?
举个栗子🌰:你花大价钱买了云服务器,精心制作了原创图片。结果隔壁老王在他的网站直接用<img src="你的图片地址">
,用户访问老王网站时,图片加载消耗的却是你的服务器流量!这就是典型的盗链行为。
防盗链核心原理:
当浏览器请求图片时,服务器会检查请求头中的Referer
字段(即来源页面地址)。如果是非法站点,直接返回错误提示或替代图片。
二、SpringBoot防盗链三大实战方案
方案1:Referer校验法(适合普通网站)
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HandlerInterceptor() {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 允许直接访问图片的路径(如CMS后台)
String uri = request.getRequestURI();
if (!uri.startsWith("/images/")) {
return true;
}
// 获取请求来源
String referer = request.getHeader("Referer");
if