HTTP请求头中的referer字段

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

猜你喜欢

转载自blog.csdn.net/weixin_43901998/article/details/106379124