今天另一部门的同事自己写了一个html然后提交到服务器,进行数据校验,没有通过,我说你那个页面获取不到referer,他说怎么获取不到呢,我说你去写个动态的页面,就获得到了,他一直不相信,和我在这儿较了半天汁儿,最后还是回去写了,一试通过 了,其实,那个同事他是没有真正理解referer的意思,在这里就算给他补上一课。

简而言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER"):

    1) 直接用<a href="">   

    2) 用Submit或<input type="p_w_picpath">提交的表单(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呢?好了,就这些吧。