request.getHeader("referer")的作用

在开发web程序的时候,有时我们需要得到用户是从什么页面连过来的,这就用到了referer。
它是http协议,所以任何能开发web程序的语言都可以实现,比如jsp中是:
request.getHeader("referer");
response.sendRedirect(ref);

js的话就是这样做:javascript:document.referrer
那它能干什么用呢?我举两个例子:
1,防止盗连,比如我是个下载软件的网站,在下载页面我先用referer来判断上一页面是不是自己网站,如果不是,说明有人盗连了你的下载地址。
2,电子商务网站的安全,我在提交信用卡等重要信息的页面用referer来判断上一页是不是自己的网站,如果不是,可能是黑客用自己写的一个表单,来提交,为了能跳过你上一页里的javascript的验证等目的。
使用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.htm

时间: 2024-10-29 10:40:04

request.getHeader("referer")的作用的相关文章

web页面防盗链功能使用--request.getHeader("Referer")

使用Request对象设置页面的防盗链 所谓的防盗链就是当你以一个非正常渠道去访问某一个Web资源的时候,服务器会将你的请求忽略并且将你的当前请求变为按正常渠道访问时的请求并返回到相应的页面,用户只有通过该页面中的相关操作去访问想要请求的最终资源. 例如,你有一个访问某资源的网址,但是你事先不知道这个网址是有防盗链的,那么当你输入该网址时你可能会发现,并没有马上跳转到你想要的资源页面而是一些无关的信息页面,但是就是在这些信息页面中你发现有一个超链接或是其他操作可以跳转到你所访问的最终资源页面.

request.getHeader("Referer")理解【转载】

request.getHeader("Referer")用于获取来源页地址,但有时却为空值,这是怎么回事.原因如下: getHeader("Referer")要走http协议时才有值,也就是说要通过<a href="url">a</a>标记才能获得那个值,而通过改变location或是<a href="javascript:location='url'">a</a>都是得不到那个

获取客户端真实IP——request.getHeader(&quot;x-forwarded-for&quot;)

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP. 经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过

servlet request getHeader(“x-forwarded-for”) 获取真实IP

request方法客户端IP: request.getRemoteAddr() 输出:192.168.0.106 客户端主机名:request.getRemoteHost()输出:abc request.getHeader("Host") 输出:192.168.0.1:8080 Web服务器名字:request.getServerName()输出:192.168.0.1 服务器监听的端口:request.getServerPort()输出:8080 在JSP里,获取客户端的IP地址的方

servlet request getHeader x-forwarded-for 获取真实IP

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP. 经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过

javaweb入门-----request与response的作用

request对象和request对象的原理 1.request和response对象request对象和request对象的原理时由服务器创建的,我们来使用它们 2.request对象是来获取请求消息,response对象是来设置响应消息 requset对象继承体系结构: ServletRequest -- 接口 | 继承 HttpServletRequest -- 接口 request功能: 1.获取请求行数据 *GET /day14/demo1?name=zhangsan HTTP/1.1

09 Request/Response

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象 request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了.要向客户机输出数据,只需要找response对象就行了 * 响应 ServletRequest               |              HttpServletResponse                   * 响应行

20160314 Request 和Response

一.Response 1.Resonse的继承结构: ServletResponse--HttpServletResponse 2.Response代表响应,于是响应消息中的 状态码.响应头.实体内容都可以由它进行操作,由此引伸出如下实验: 3.利用Response输出数据到客户端 response.getOutputStream().write("中文".getBytes())输出数据,这是一个字节流,是什么字节输出什么字节,而浏览器默认用平台字节码打开服务器发送的数据,如果服务器端

request&amp;response

HttpServletRequest&HttpServletResponse. web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象和代表响应的response对象.如果要获取客户机提交的数据,只需要request对象,要想客户机输出数据,只需要response对象. 一.Response    1.Resonse的继承结构:            ServletResponse--HttpServletResponse    2.Response