今天另一部门的同事自己写了一个html然后提交到服务器,进行数据校验,没有通过,我说你那个页面获取不到referer,他说怎么获取不到呢,我说你去写个动态的页面,就获得到了,他一直不相信,和我在这儿较了半天汁儿,最后还是回去写了,一试通过 了,其实,那个同事他是没有真正理解referer的意思,在这里就算给他补上一课。
简而言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER"):
1) 直接用<a href="">
2) 用Submit或<input type="image">提交的表单(POST或GET)
3) 使用JavaScript提交的表单(POST或GET)
下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况:
1) 从收藏夹链接
2) 单击主页或自定义的地址
3) 在浏览器中直接输地址
4) 使用JavaScript的Location.href或者是Location.replace()
5) <%Response.Redirect%>
6) <%Response.AddHeader%>或者是<mete http-equiv="refresh">转向
7) 用XML加载地址
我那个同事就属于不能获取情况中的第二点,自己写一个html怎么可能有referer呢?好了,就这些吧。
本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/876095,如需转载请自行联系原作者