浏览器中直接输入URL的时候,它的头文件是空的,因此,可以在访问的时候做两个判断:头文件是否为空以及以什么页面进行跳转,如果不符合跳到错误页面即可。
什么是Referer?
这里的 Referer 指的是HTTP头部的一个字段,也称为HTTP来源地址(HTTP Referer),用来表示从哪儿链接到目前的网页,采用的格式是URL。换句话说,借着 HTTP Referer 头部网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求。
什么是盗链
假设一个网站的首页中想显示一些图片信息,而该网站的服务器中并没有这些图片资源,它就通过在Html文件或jsp文件中使用img标签链接到其他网站的图片资源,将其展示给浏览者,这就是盗链。
如何防盗链
在本网站中,对所有请求都进行判断请求信息中Referer请求头的值是否是本站的url,如果不是可以阻止其访问或跳转到指定的页面。
防盗链原理
http标准协议中有专门的字段记录referer
一来可以追溯上一个入站地址是什么
二来对于资源文件,可以跟踪到包含显示他的网页地址是什么
因此所有防盗链方法都是基于这个Referer字段
防盗链的作用
在很多地方,如淘宝、拍拍、有啊等C2C网站,发布商品需要对宝贝进行描述,就需要图片存储,而为了使自己辛辛苦苦拍摄的图片不被别人调用,就需要防盗链的功能。
提供防盗链的图片网站很多,如有照片、又拍网、百度相册、QQ相册、网易相册等等,但是既能支持网店外链,又有防盗链功能的网站很少,其中做的比较好的如又拍网、有照片,可以选择单独图片或者多张图片防盗链,使用方便快捷。
使用Referer请求头要注意以下两点:
如果是在浏览器地址栏上直接访问,那么请求信息中就没有Referer请求头。
如果在页面中点击超链接或者提交表单,请求信息中存在Referer请求头。
Referer请求头有以下两个用途:
统计工作
防盗链
什么是空Referer,什么时候会出现空Referer?
首先,我们对空Referer的定义为,Referer 头部的内容为空,或者,一个HTTP请求中根本不包含Referer头部。
那么什么时候HTTP请求会不包含Referer字段呢?根据Referer的定义,它的作用是指示一个请求是从哪里链接过来,那么当一个请求并不是由链接触发产生的,那么自然也就不需要指定这个请求的链接来源。
比如,直接在浏览器的地址栏中输入一个资源的URL地址,那么这种请求是不会包含Referer字段的,因为这是一个“凭空产生”的HTTP请求,并不是从一个地方链接过去的。
在防盗链设置中,允许空Referer和不允许空Referer有什么区别?
在防盗链中,如果允许包含空的Referer,那么通过浏览器地址栏直接访问该资源URL是可以访问到的;
但如果不允许包含空的Referer,那么通过浏览器直接访问也是被禁止的。