一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

jsp request.getHeader("referer")

时间:2011-07-19 编辑:简简单单 来源:一聚教程网

jsp教程 request.getHeader("referer")


它是http协议,所以任何能开发web程序的语言都可以实现,比如jsp中是:

request.getHeader("referer");

php教程是$_SERVER['HTTP_REFERER']。其他的我就不举例了(其实是不会其他的语言)。

那它能干什么用呢?我举两个例子:

1,防止盗连,比如我是个下载软件的网站,在下载页面我先用referer来判断上一页面是不是自己网站,如果不是,说明有人盗连了你的下载地址。

2,电子商务网站的安全,我在提交信用卡等重要信息的页面用referer来判断上一页是不是自己的网站,如果不是,可能是黑客用自己写的一个表单,来提交,为了能跳过你上一页里的网页特效的验证等目的。

使用referer的注意事项:

如果我是直接在浏览器里输入有referer的页面,返回是null(jsp),也就是说referer只有从别的页面点击连接来到这页的才会有内容。

我做了个实验,比如我的referer代码在a.jsp中,它的上一页面是b.htm,c.htm是一个带有iframe的页面,它把a.jsp嵌在iframe里了。我在浏览器里输入b.htm的地址,然后点击连接去c.htm,那显示的结果是b.htm,如果我在浏览器里直接输入的是c.htm那显示的是c.htmreferer是浏览器在用户提交请求当前页面中的一个链接时,将当前页面的URL放在头域中提交给服务端的,如当前页面为a.html,它里面有一个b.html的链接,当用户要访问b.html时浏览器就会把a.html作为referer发给服务端.

如何获取 上一级页面的地址

OK,如果发送页面以POST方式提交
这个request.getHeader("referer")  完全没有问题
但是如果如果发送页面以get方式提交 ,或许还带有参数
request.getHeader("referer") 会返回空值  如何解决呢?

说下我的具体情况吧
比如在每个JSP页面 都包含
<%@page errorPage="../error.jsp" %>
如果出现任何问题 都会跳到error.jsp页面
error.jsp 有一个back的按钮 要求实现返回上一级页面

其实利用history.back() 就可以实现 ,但是由于代理服务器原因 去掉了缓存的原因  所以需要另一种方式来实现此功能

大家有什么好的方法和建议吗??谢谢

把地址保存到request或session里面去。

你根本没有理解<%@page errorPage="../error.jsp" %>
的真正意义,否则不可能会问出这种问题

不好意思  get 用request.getHeader  是没问题的
document.location="xx.jsp"  这样才有问题

那楼上请教一下该如何理解呢  ~  说实话 我只知道errorpage 就是相当于一个大的catch 

但需求要求在这个页面 有一个返回上一级页面的功能

OK,如果发送页面以POST方式提交
这个request.getHeader("referer")  完全没有问题

热门栏目