在web系统中,盗链的问题时有发生,即复制一个url地址,在另一个地方也能访问。
在jsp中通过request对象可以获取客户请求信息和表单信息,在客户请求头信息中,"Referer"属性是上一次请求的url,利用"Referer"属性值可以解决盗链的问题
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> here is index.jsp<br /> <a href="a.jsp">点击跳转到 a.jsp</a> </body> </html>
a.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> here is a.jsp<br/> 从哪个链接跳转过来: <%=request.getHeader("Referer") %><br /> <% if( request.getHeader("Referer")==null || request.getHeader("Referer").indexOf("domain.com")<0 ) { %> 非法访问 <% } else{ %> 欢迎您! <% } %> </body> </html>
在上述代码中,”domain.com" 部分可根据实际情况改为站点的域名,上述的a.jsp页面,只允许从站点内部访问,而粘贴地址到另一浏览器访问的方式将被禁止。