什么是HTTP Referer?

故事的开始
在开发做Android web server服务器的时候,实现视频分段请求,在做断点续传的过程中发现其中包含referer字段,因此就想研究一下。

进入正题
如下所示为请求字段,请求的是视频的0-262143字节段的文件,

GET /test.mp4 HTTP/1.1
Host: 192.168.11.109:8080
Connection: keep-alive
Accept-Encoding: identity;q=1, *;q=0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept: */*
Referer: http://192.168.11.109:8080/test.mp4
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7
Range: bytes=0-262143
If-Range: 8acbf179

下面是响应信息,响应头是用Partial Content标记过的,意味着分段请求文件。

HTTP/1.1 206 Partial Content 
Content-Type: video/mp4
Date: Tue, 30 Apr 2019 04:08:56 GMT
Accept-Ranges: bytes
contentFeatures.dlna.org: 
Server: DLNADOC/1.50 UPnP/1.0 Cling/2.0 DroidUPnP/APP_VERSIONAndroid/BUILD_RELEASE
Content-Range: bytes 0-262143/6021946
ETag: 8acbf179
transferMode.dlna.org: Streaming
realTimeInfo.dlna.org: DLNA.ORG_TLAG=*
Content-Length: 262144
Connection: keep-alive
Content-Length: 262144

此请求头和响应头并不是原始的请求地址,而是来源于http://192.168.11.109:8080/test.mp4 这个地址。

为什么要有这个字段呢?

在播放器内部可能要减轻请求负担,优化用户的体验,也可能要实现分段下载,缓存播放,因此转而分段请求文件的内容,但是在请求的过程中会加上referer字段表示这个请求的来源。

Http Refer是一个可选的Http Header信息。

代表本次请求的来源。如果请求的是一张图片,它就表示这张图片的来源,即此图片出现的html页面的来源地址。

得出的结论

refer既然是一个请求Header的可选项,那么它就是可以伪造的。

  • 为了推广的目的,有些请求会加上虚假的refer信息,其值为想做宣传的网页地址。
  • refer并不会被使用客户端的用户看到,但是很多的网络引擎会使用refer作为网络分析,来分析此网站被连接的数量。
  • 很多建站人员也会根据这个来做回访,以此增加与客户链接的机会,这个对于网站管理者会很有用。

但是由于可以被伪造,因此不能过分的信赖这个字段。

https://en.wikipedia.org/wiki/HTTP_referer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值