HTTP Referer简介

2024-02-15 13:48
文章标签 http 简介 referer

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

在百度中搜索搜狐,点击链接进去,抓包信息如下:

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模块等进行防盗链。

文章参考及转载自:http://www.linuxidc.com/Linux/2008-05/12924.htm

http://hi.baidu.com/smallfish7788/blog/item/1b2e1dd9a5944e3033fa1cb1.html


转载地址:http://blog.sina.com.cn/s/blog_8729dd9801011rn1.html

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



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

相关文章

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

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

Java Stream 并行流简介、使用与注意事项小结

《JavaStream并行流简介、使用与注意事项小结》Java8并行流基于StreamAPI,利用多核CPU提升计算密集型任务效率,但需注意线程安全、顺序不确定及线程池管理,可通过自定义线程池与C... 目录1. 并行流简介​特点:​2. 并行流的简单使用​示例:并行流的基本使用​3. 配合自定义线程池​示

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. 发送

PostgreSQL简介及实战应用

《PostgreSQL简介及实战应用》PostgreSQL是一种功能强大的开源关系型数据库管理系统,以其稳定性、高性能、扩展性和复杂查询能力在众多项目中得到广泛应用,本文将从基础概念讲起,逐步深入到高... 目录前言1. PostgreSQL基础1.1 PostgreSQL简介1.2 基础语法1.3 数据库

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python WSGI HTTP服务器Gunicorn使用详解

《PythonWSGIHTTP服务器Gunicorn使用详解》Gunicorn是Python的WSGI服务器,用于部署Flask/Django应用,性能高且稳定,支持多Worker类型与配置,可处... 目录一、什么是 Gunicorn?二、为什么需要Gunicorn?三、安装Gunicorn四、基本使用启