根据request请求头中的referer实现防盗链操作

1.通俗理解

通俗的来讲,跨站访问资源,被称为盗链。比如某一个商业网站,有很多自主版权的图片,自身展示用于商业目的。而另一个没有版权的网站,希望在自己的网站上面也展示这些图片,直接使用超链接到有版权的网站,这样以来,大量的客户端在访问有版权的网站时,实际上消耗了没有版权网站的流量,从而侵犯的有版权网站的利益。

HTTP请求中会包含来自哪个url的点击来源,通过判断request请求头的referer是否来源于本站:

我们就用优酷网站做示范

if(referer != null){
	//请求头中是否包含优酷网地址
	if(referer.contains("www.youku.com")){
	//正常访问
	System.out.println("正在使用优酷正版资源");
	}else{
	//访问异常
	System.out.println("请使用优酷网观看电影");
	}
}

一般的站点或者静态资源托管站点都提供防盗链的设置,也就是让服务端识别指定的Referer,在服务端接收到请求时,通过匹配referer头域与配置,对于指定放行,对于其他referer视为盗链。

这里的referer就是告诉请求响应者请求的引用页是谁,通过判断是否含有版权网站的地址名来达到防盗链的目的,然而这只是早期防盗链的机制之一。

2.注意事项

如果是从浏览器地址栏直接发起的请求,请求头中的referer参数为null,只有通过点击超链接访问资源时,这个参数才会有值。

通过超链接访问的方式

艾欧尼亚,昂扬不灭,为了更美好的明天而战(#^.^#)
原文地址:https://www.cnblogs.com/lovelywcc/p/14394611.html