request.getHeader("Referer")用于获取来源页地址,但有时却为空值,这是怎么回事。原因如下:
getHeader("Referer")要走http协议时才有值,也就是说要通过<a href="url">a</a>标记才能获得那个值,而通过改变location或是<a href="javascript:location='url'">a</a>都是得不到那个值的。
request.getHeader("Referer")返回的是一个Enumeration 玫举
Enumeration e =request.getHeaders("Referer");
String a;
if(e.hasMoreElements()){
a=(String)e.nextElement();
}else{
a="直接访问";
}
使用request.getHeaders("Referer")返回的Enumeration 玫举本身就只有一个元素,也就是request.getHeader("Referer")的返回值。
以前有这样一个帖子目的是如何获取上一级页面的地址 如果发送页面以POST方式提交,这个request.getHeader("referer") 完全没有问题。但是如果发送页面以get方式提交 ,或许还带有参数,request.getHeader("referer") 会返回空值(可以防止用户在地址里粘贴链接,因为在地址栏里贴地址是数据get提交方式)。那么该如何解决呢? 比如在每个JSP页面都包含 如果出现任<% page errorPages="../error.jsp"%> 何问题 ,都会跳到error.jsp页面。error.jsp 有一个back的按钮 要求实现返回上一级页面 其实利用history.back() 就可以实现 ,但是由于代理服务器原因 去掉了缓存的原因所以需要另一种方式来实现此功能。 function jump(url){ referer的意图是判断访问来源,比如你想知道用户是通过google还是baidu找到你的页面的,就可以判断referer。很多下载站点也用它防止盗链,所以flash get之类的软件会自动把当前页作为referer字段发给下载地址以伪装成站内点击 |