首页 > 编程知识 正文

HTTP请求头中的referer字段

时间:2023-05-05 23:54:40 阅读:259748 作者:196

文章目录 1. HTTP_REFERER定义2. 实例3. referer字段的作用?3.1 统计网站请求来源3.2 防盗链 4. referer为空的情况

1. HTTP_REFERER定义

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。

简单来说就是jsdxz向一个服务器发起请求的时候,服务器会很好奇,你是从哪里知道它的,因此你需要通过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。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。