在百度中搜索搜狐,点击链接进去,抓包信息如下:
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=%CB%D1%BA%FC
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']。