HTTP Referer简介

本文深入探讨了HTTP Referer的概念、使用场景及其安全性风险,包括Referer的用途、常见空Referer情况、PHP获取Referer的方法、Apache利用Referer进行防盗链的实践案例及配置方法,以及防盗链配置中可能出现的问题和优化建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在百度中搜索搜狐,点击链接进去,抓包信息如下:
 
GET http://www.sohu.com/ HTTP/1.1
 
Host: www.sohu.com
 
Connection: keep-alive
 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.4 (KHTML, like Gecko) Chrome/16.0.889.0 Safari/535.4
 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
 
Referer: http://www.baidu.com/s?tn=baidusite&word=�Ѻ�
 
Accept-Encoding: gzip,deflate,sdch
 
Accept-Language: zh-CN,zh;q=0.8
 
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
 
Cookie: www1=w:1; vjuids=26e753894.132e8ab7273.0.c409be1c; sci12=w:1; ent12=w:1; gn12=w:1; IPLOC=CN1200; SUV=1110092031152327; SOHUHOMETAB=visit:2; TurnAD9=visit:3; TurnADzs19=visit:1; TurnADzs20=visit:2; TurnAD351=visit:2; TurnAD119=visit:1; TurnAD118=visit:2; TurnAD10=visit:2; TurnAD120=visit:3; TurnAD11=visit:2; TurnAD414=visit:1; TurnAD415=visit:1; TurnAD349=visit:3; TurnADfankaniu=visit:2; TurnADab10e888e532c9887794784e83c9504c=visit:1; www0=w:1; FULL=w:1; COUPLET=w:1; tiyu11=w:1; tiyu12=w:1; vjlast=1318163543.1318741656.11
 
If-Modified-Since: Sun, 16 Oct 2011 05:01:04 GMT
 
其中红色部分就是访问www.sohu.com时,HTTP请求中的Referer,表示通过百度搜索关键字’搜狐’,点击链接跳转而来。
 
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
 
Referer其实应该是英文单词Referrer,不过拼错的人太多了,所以编写标准的人也就将错就错了。
 
关于HTTP Referer使用非常简单,使用场合比较多的是用于页面统计、资源防盗链等,但还是有一点值得注意的是:Referer是不安全的,客户端可以通过设置改变 Request中的值,尽量不要用来进行安全验证等方面。
 
Referer是不安全的,客户端可以通过设置改变 Request中的值,尽量不要用来进行安全验证等方面;下面介绍下默认情况下Referer可能出现为空的场景:
 
1、页面从https跳转到http,应该是处于安全考虑,该点在RFC-2616中有说明,主流浏览器均遵守这个规则,比如IE、FF;但默认情况下https到https是会发送Referer的。
 
2、直接在浏览器中输入目标URL。
 
3、由于FF提供了很强大的自定义参数设置功能,所以我们可以通过about:config页面修改以下两个选项的默认设置:network.http.sendRefererHeader (default=2),设置Referer的发送方式,0为完全不发送,1为只在点击链接时发送,在访问页面中的图像什么的时候不发送,2为始终发送。network.http.sendSecureXSiteReferrer (default=true),设置从一个Https访问到另外Https页面的时候是否发送Referer,true为发送,false为不发送。
 
4、从收藏夹访问。
 
5、单击’主页’或者自定义的地址
 
6、用js来window.open等方式打开(还有location.href,location.replace())。
 
在PHP中可以通过预定义变量$_SERVER获取HTTP的Referer,即:$_SERVER['HTTP_REFERER']。
 
Apache利用HTTP_Referer防盗链
 
Posted on 2011 年 10 月 16 日
 
呼叫中心企业后台管理系统和前台座席系统页面中都有通话记录录音的试听和下载功能,如何在用户试听和下载录音的时候不暴露录音地址或者录音地址不能被盗用呢?这就涉及到mp3,图片等资源的防盗链问题。
 
简单的,我们可以用HTTP请求header中的referer判断,只要referer是内部网站的地址或者可信任的地址,就可以访问相应资源。通过Apache的FilesMatch配置可以实现,在Apache的配置文件httpd.conf中加入:
 
SetEnvIfNoCase Referer “^http://www.example.com” local_ref=1
 
SetEnvIfNoCase Referer “^http://test.example.com” local_ref=1
 
<FilesMatch “\.(txt|doc|mp3|zip|rar|jpg|gif)”>
 
    Order Allow,Deny
 
    Allow from env=local_ref    #referer为www.example.com或test.example.com的请求
 
    Allow from 127.0.0.1          #本机地址
 
</FilesMatch>
 
其中SetEnvIf指令根据客户端的请求属性设置环境变量,SetEnvIfNoCase代表当满足某个条件时,为变量赋值,一般结合其他指令使用。
 
也可以使用正则表达式:
 
SetEnvIf Referer “^http://(.)+\.ilinux\.cn/” local_ref=1 
 
SetEnvIf Referer “^http://(.)+\.isql\.cn/” local_ref=1 
 
SetEnvIf Referer “^http://(.)+\.other\.org\.cn/” local_ref=1 
 
SetEnvIf Request_URI “/logo(.)+” local_ref=0 
 
<FilesMatch “\.(mp3|wmv|png|gif|jpg|jpeg|avi|bmp|ram|rmvb|rm|rar|zip|mp3)”> 
 
    Order Allow,Deny 
 
    Allow from env=local_ref 
 
</FilesMatch>

 

以上配置方式都还也写到.htaccess,使用.htaccess文件也会存在一些问题,比如性能。如果使用.htaccess文件,则Apache需要在每个目录中查找该文件,还必须在所有更高级的目录中查找它,另外,每次请求一个页面时,也都需要读取.htaccess文件。因此,允许使用.htaccess文件都会导致性能的下降。
 
例如,对/var/www/htdocs中页面的请求,Apache必须查找以下文件:
 
/.htaccess
 
/var/.htaccess
 
/var/www/.htaccess
 
/var/www/htdocs/.htaccess
 
总的来说,通过.htaccess来保护网站更为方便和灵活。
 
最后还可以用Apache的mod_rewrite模块等进行防盗链。

 

转载于:https://www.cnblogs.com/douglasvegas/p/4704176.html

Unet是一种深度学习模型,最初由Ronneberger等人在2015年提出,主要用于生物医学图像分割。在Matlab中实现Unet网络可以利用其强大的数学计算能力和友好的可视化界面,非常适合科研和教育用途。这个"Unet分割(Matlab)Demo"提供了在Matlab环境中构建、训练和应用Unet模型的示例。 Unet网络的特点在于其对称的架构,由下采样(编码器)和上采样(解码器)两部分组成。编码器部分用于捕捉图像的上下文信息,通过多个卷积层和池化层逐级降低特征图的分辨率,增加表示能力。解码器部分则负责恢复图像的原始空间分辨率,通过上采样和与编码器的跳连接来恢复细节信息。 在`segunet.mlx`文件中,我们可能会看到以下关键步骤的实现: 1. **网络结构定义**:定义Unet的卷积层、池化层、上采样层等。Matlab的Deep Learning Toolbox提供了构建自定义网络的函数,如`conv2d`、`maxpool2d`和`upsample2d`。 2. **损失函数选择**:图像分割通常使用交叉熵损失(cross-entropy loss),有时也会结合Dice系数或Jaccard相似度来评估模型性能。 3. **数据预处理**:`data`文件可能包含训练和验证数据,需要进行归一化、分批次等预处理操作。 4. **模型训练**:设置优化器(如Adam)、学习率策略,并执行训练循环。 5. **模型评估**:在验证集上评估模型的性能,例如计算 Dice 指数或IoU(Intersection over Union)。 6. **可视化结果**:展示模型预测的分割结果,与实际标签对比,帮助理解模型性能。 为了运行这个Demo,你需要确保安装了Matlab的Deep Learning Toolbox以及相关的数据集。`segunet.mlx`是Matlab Live Script,它将代码、注释和输出结合在一起,便于理解和执行。在Matlab环境中打开此脚本,按照指示操作即可。 此外,了解Unet在网络架构设计上的创新,比如跳跃连接(skip connections),有助于理解模型为何能有效地处理图像分割任务。Unet的成功在于它既能捕捉全局信息又能保留局部细节,因此在生物医学图像分析、遥感图像分割、语义分割等领域有广泛应用。 这个"Unet分割(Matlab)Demo"提供了一个直观的起点,帮助初学者和研究人员快速上手Unet网络的实现和训练,为后续的图像分割项目打下基础。通过学习和实践,你可以掌握深度学习在Matlab中的应用,进一步提升在图像处理领域的技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值