1. HTTP_REFERER定义
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。
简单来说就是当你向一个服务器发起请求的时候,服务器会很好奇,你是从哪里知道它的,因此你需要通过http请求头中的referer字段告诉该服务器,我是从哪个页面访问你的。
2. 实例
为了加深印象,这里我用django写了两个简陋的页面。
过程是这样的,我们先构造一个页面A,然后在页面A中嵌入一个a标签,让这个a标签链接到页面B,然后页面B的后台接收请求的referer
字段看看到底是什么。
首先看页面A:
当我们点击页面B
的时候就会跳转到页面B,同时我们注意一下该页面的url: 127.0.0.1:8986/2
。
然后我们看看点击后进入页面B的反应。
我们可以看到,B页面知道我们是从A页面请求访问的。
那么我们再来看一下B页面的代码:
def get_referer(request):
# 后台获取referer信息
referer = request.META.get("HTTP_REFERER")
# 传给html页面
context = {
'referer': referer
}
return render(request, 'test.html', context=context)
这里通过request.META.get("HTTP_REFERER")
获取请求头的referer
字段,然后传给前端,在前端进行展示。
那么通过上面这个例子,大家就能理解referer
字段到底是什么了。
3. referer字段的作用?
3.1 统计网站请求来源
你可以通过referer
字段来统计请求的来源。得知用户大多数是从哪里访问你网站。
3.2 防盗链
你可以通过对请求方的referer
进行判断过滤,确认是否可以访问。比如你网站是有一些图片,你只允许本网站的页面请求,那么你就可以通过referer
字段过滤掉来自其他网站对你的图片请求。
4. referer为空的情况
还是刚才那个B页面,之前我们是通过点击A页面的url
进入的,那么当我们在浏览器直接输入B页面的url
时,referer
字段就是空的。
看下效果:
此处后台不到referer
的值,因此显示为None
。