HTTP referer说明

2024-05-30 23:08
文章标签 http 说明 referer

本文主要是介绍HTTP referer说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、说明

对Application_BeginRequest断点调试结果说明

protected void Application_BeginRequest(object sender, EventArgs e)
{string absolutePath = Request.Url.AbsolutePath;Uri referer = Request.UrlReferrer;
}

1.从浏览器直接输入地址请求 referer为空

2.对网站第一次请求或强制刷新,浏览器会获取网站根目录的favicon.ico 文件

3.对于网页的图片、样式、js等请求时referer中会带有当前静态内容所属的页面地址

4.如果是从外网页面点击来的请求也会带有外网的页面地址


二、 描述

referer, 或 HTTP referer, 是HTTP表头的一个字段,用来表示从哪儿连结到目前的网页,采用的格式是URL。换句话说,借着 referer ,目前的网页可以检查访客从哪里而来,这也常被用来对付伪造的跨网站请求。

而 dereferer 则是将 referer 资讯剥离,所以网站将无法识别访客从何而来。

Referer的正确英语拼法是referrer。由于早期HTTP规范的拼写错误,为了保持向后兼容就将错就错了。其它网络技术的规范企图修正此问题,使用正确拼法,所以目前拼法不统一。

当访客访问网页时,referer 或 referring page 是前一个网页的URL。如果是图片的话,通常指的就是图片所在的网页。在网页浏览器送往网页服务器的时候,referer 就被包含在HTTP请求方法中。

许多网站都会把 referers 纪录起来以便追踪使用者的动态,大部分的分析软件都会处理这个资讯。但是 referer 资讯可能会有隐私权的问题,部份网页浏览器允许使用者不要送出这个资讯。有些代理服务器和防火墙也 会把 referer 资讯筛选掉,以避免让外部知道非公开的网站位置。缺少了 referer 资讯有可能会造成某些问题:某些服务器会因为缺少了正确的 referer 资讯而进行阻挡,以避免未经授权的图片使用(盗图)或是其他对服务器有影响的行为。针对这样的阻挡,有些代理服务器软件则提供了针对特定网站送出假 referer 资讯的功能的功能。


二、

1 Referer可以记录访问的来源,统计访问量,可以用来防盗链。
2 客户端用js不能篡改Referer,用一些插件什么的可以达到伪造的目的。
3 可以使用Fiddler修改Referer。
选择 fiddler窗口的rules->customize rules…在打开的CustomRules.js记事本窗口中,找到如下位置  static function OnBeforeRequest(oSession: Session)  {    //  Sample Rule: Color ASPX requests in RED    //  if (oSession.uriContains(“.aspx”)) { oSession["ui-color"] = “red”; }
在这一句的后面加上    if(oSession.oRequest.headers.ExistsAndContains(“Referer”,”220.170.79.105″))    {     oSession.oRequest.headers.Remove(“Referer”);    }
4 服务器端修改Referer,通过webClient,直接设置访问可以达到修改目的。
5 其它的一些修改Referer的方式方法。参考: http://www.cnblogs.com/mx3000/archive/2007/12/17/1003239.html
利用Referer防止图片盗链
虽然Referer并不可靠,但用来防止图片盗链还是足够的,毕竟不是每个人都会修改客户端的配置。(一般只允许站内访问)
参考: http://blog.csdn.net/21aspnet/article/details/6197314


这篇关于HTTP referer说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017042

相关文章

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

MySQL之复合查询使用及说明

《MySQL之复合查询使用及说明》文章讲解了SQL复合查询中emp、dept、salgrade三张表的使用,涵盖多表连接、自连接、子查询(单行/多行/多列)及合并查询(UNION/UNIONALL)等... 目录复合查询基本查询回顾多表查询笛卡尔积自连接子查询单行子查询多行子查询多列子查询在from子句中使

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片