初识http之referer字段

本文介绍了HTTP头部字段Referer的基本概念及其在防盗链中的作用。详细解释了Referer字段如何帮助验证请求来源的真实性,并讨论了允许或不允许空Referer的区别。

首先了解http的referer字段的作用

referer字段表示从哪里链接到当前网页,常用于对付伪造的跨网站请求,通过referer字段来实现防盗链。

ps:关于盗链

盗链指的是在自己的界面展示不在自己服务器上的内容,通过技术手段获得他人服务器的资源地址,绕过别人资源展示页面,在自己页面向用户提供此内容,从而减轻自己服务器的负担,因为真实的空间和流量来自别人服务器。对于使用apahce的服务器可以使用自带Url Rewrite功能来实现防盗链,而对于使用IIS的服务器,需要通过第三方插件实现防盗链。

允许空 Referer 和不允许空 Referer 有什么区别?

在防盗链的白名单设置中,如果指名白名单中包含空的 Referer,那么通过浏览器地址栏直接访问该资源 URL 是可以访问到的;

但如果不指名需要包含空的 Referer,那么通过浏览器直接访问也是被禁止的。

ps:空referer指直接从浏览器地址栏输入资源的URL地址,这种请求不包含referer字段

参考:

https://developer.qiniu.com/fusion/kb/1337/what-is-hotlinking-prevention-set-of-empty-referer

http://blog.51cto.com/windyli/315283


要在Apache中限制HTTP头部Referer字段,可以使用`mod_rewrite`模块,通过编写规则来实现不同的限制需求。以下是具体的操作步骤及示例代码: ### 启用`mod_rewrite`模块 首先要保证`mod_rewrite`模块已启用。可以通过编辑Apache配置文件(通常是`httpd.conf`或者在`apache2.conf`目录下的配置文件),找到并取消下面这行代码的注释: ```apache LoadModule rewrite_module modules/mod_rewrite.so ``` 修改完成后,重启Apache服务使更改生效。 ### 编写`mod_rewrite`规则 在相应的虚拟主机配置文件或者`.htaccess`文件里编写规则,以下是几种常见的限制情况及示例代码: #### 只允许特定域名的Referer 假设只允许来自`example.com`域名的请求,可以使用如下规则: ```apache RewriteEngine On RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC] RewriteRule ^ - [F] ``` 上述代码中,`RewriteEngine On`开启了`mod_rewrite`引擎;`RewriteCond`条件判断`HTTP_REFERER`是否不以`https://example.com`或者`http://example.com`开头(不区分大小写);`RewriteRule ^ - [F]`表示如果条件满足,返回403禁止访问错误。 #### 禁止特定域名的Referer 若要禁止来自`badexample.com`域名的请求,可使用以下规则: ```apache RewriteEngine On RewriteCond %{HTTP_REFERER} ^https?://(www\.)?badexample\.com [NC] RewriteRule ^ - [F] ``` 这里的`RewriteCond`条件判断`HTTP_REFERER`是否以`https://badexample.com`或者`http://badexample.com`开头(不区分大小写),若满足条件,同样返回403禁止访问错误。 #### 允许空Referer 有时候需要允许没有Referer的请求,可在规则中添加额外的条件: ```apache RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC] RewriteRule ^ - [F] ``` `RewriteCond %{HTTP_REFERER} !^$`这一条件确保只对有Referer的请求进行检查,允许没有Referer的请求正常访问。 ### 保存并重启Apache 编写完规则后,保存配置文件,然后重启Apache服务,让新的规则生效。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值