HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

Referer其实应该是英文单词Referrer,不过拼错的人太多了,所以编写标准的人也就将错就错了。

我的问题
我刚刚把feed阅读器改变为Gregarius,但他不像我以前用的liferea,访问新浪博客的时候,无法显示其中的图片,提示“此图片仅限于新浪博客用户交流与沟通”,我知道,这就是HTTP Referer导致的。

From https to http
我还发现,从一个https页面上的链接访问到一个非加密的http页面的时候,在http页面上是检查不到HTTP Referer的,比如当我点击自己的https页面下面的w3c xhtml验证图标(网址为http://validator.w3.org/check?uri=referer),从来都无法完成校验,提示:

No Referer header found!

原来,在http协议的rfc文档中有定义:

因为源连接可能是私有信息,或者是可能泄露其它私有信息源,强烈建议用户能够选择是否发送referer域。例如,浏览器客户端可能有切换选项来公开、匿名浏览,讲相应的允许、发送refererfrom信息。

如果通过安全协议传输,客户端不应该在http请求中包括referer域。但是咱们的NTA是包括的。

Firefox中关于Referer的设置
都在里,有两个键值:

network.http.sendRefererHeader (default=2)
设置Referer的发送方式,0为完全不发送,1为只在点击链接时发送,在访问页面中的图像什么的时候不发送,2为始终发送。参见Privacy Tip #3: Block Referer Headers in Firefox

network.http.sendSecureXSiteReferrer (default=true)
设置从一个加密页访问到另外一个加密页的时候是否发送Referer,true为发送,false为不发送。

利用Referer防止图片盗链
虽然Referer并不可靠,但用来防止图片盗链还是足够的,毕竟不是每个人都会修改客户端的配置。实现一般都是通过apache的配置文件,首先设置允许访问的地址,标记下来:

# 只允许来自csdn.net的访问,图片可能就放置在csdn.net网站的页面上
SetEnvIfNoCase Referer "^http://www.csdn.net/" local_ref
# 直接通过地址访问
SetEnvIf Referer "^$" local_ref

然后再规定被标记了的访问才被允许:

<FilesMatch ".(gif|jpg)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>

或者

<Directory /web/images>
   Order Deny,Allow
   Deny from all
   Allow from env=local_ref
</Directory>

HTTP referer相关推荐

  1. 限制HTTP数据包发送Referer

    一般点击一个A标签的时候都会发送 Referer 什么是 Referer? 就是你点击A标签 Referer的信息告诉服务端你从哪里点击出来的 可在HTML上加 <meta name=" ...

  2. Nginx使用http_accesskey_module防盗链,告别referer,告别伪装

    Nginx使用http_accesskey_module防盗链,告别referer,告别伪装 传统的防盗链很多是依赖referer,比如apache的rewrite模块,根据规则判断referer,这 ...

  3. 防止非法链接(referer)

    转载:https://blog.csdn.net/QQ1012421396/article/details/62430154 前言: HTTP Referer是header的一部分,当浏览器向web服 ...

  4. HTTP Referer 防外链

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

  5. php使用referer,php中HTTP_REFERER函数用法实例

    本文实例分析了php中HTTP_REFERER函数用法.分享给大家供大家参考.具体分析如下: 利用php的http_referer函数来判断用户的来路,这是比较简单的,实例代码如下: if (isse ...

  6. nginx利用referer指令实现防盗链配置

    nginx模块ngx_http_referer_module通常用于阻挡来源非法的域名请求,我们应该牢记.下面这篇文章主要介绍了nginx利用referer指令实现防盗链配置的相关资料,需要的朋友可以 ...

  7. Java中伪造referer来获取数据

    2019独角兽企业重金招聘Python工程师标准>>> 伪造方法,参考代码: public class HelloA {private String large = new Stri ...

  8. HTTP Referer二三事---转

    授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/320)的形式标明文章原始出处和作者信息及本声明. 什么是HTTP Refer ...

  9. CTF-web-xff,referer 知识点;

    xff全称为X-Forwarded-Forxff在一般客户端的HTTP请求中是不存在的,但是当经过代理服务器时,代理服务器就会加上一个xff,其内容为客户端的IP地址,如果后面还有代理服务器,那么会在 ...

最新文章

  1. linux 内核 同步机制
  2. 30岁自学python找工作-程序员自学Python开发,20到30岁几乎决定了你的未来!
  3. 韵镖侠登录不上 显示无法连接到服务器,什么是韵镖侠?韵镖侠是做什么的?...
  4. Web高级征程:《大型网站技术架构》读书笔记系列
  5. 关于linux命令的书,关于LINUX命令行(一)
  6. Android使用addView动态加载布局文件
  7. 教你玩转CSS表格(table)
  8. java 中关键字_java中关键字一览
  9. java 网络实验_java网络聊天室实验
  10. 深度学习基础(七)—— Gibbs 采样
  11. HRESULT:0x80040228 异常解决
  12. MySQL(21)-----数据库事务
  13. struts(二)——struts框架实现的基本原理
  14. 《实战突击:Java Web项目整合开发》简介及源码
  15. 周鸿祎麻辣点评中国互联网公司
  16. Java spring boot 开发中控Live10R指纹采集器linux(指纹登录系统)
  17. 电信主机托管费用_电信服务器托管怎样选择?
  18. APICloud框架——获取本地图片信息
  19. 在苹果手机上实现虹膜识别(通过改装实现)
  20. windows系统服务器如何修改登录密码

热门文章

  1. java三角形创建子类_如何创建子类,以便参数属于Java中的子类类型
  2. matlab中的mkdir函数_科学网—Matlab中计算函数运行时间的三种方法及判断新建文件夹 - 张伟的博文...
  3. h5 video视频播放的同时加水印,图片加水印同样的原理
  4. Pyhton,OpenCV对象检测之——Haar级联人脸及眼睛检测
  5. PyTorch框架:(2)使用PyTorch框架构建神经网络模型---气温预测
  6. c++中求字符串数组的min/max
  7. ROS系统开发——ROS,realsense风险和解决方案备忘录
  8. LaneATT调试笔记
  9. php会员中心模板,会员中心模板
  10. c++ 判断文件夹是否存在,不存在则创建(可建多级目录)