使用场景:
明明引用了一个正确的图片地址,只显示“假图片”。常见的防盗链系统,一般使用在图片、音视频、软件等相关的资源上。
实现原理:
Referer:获取请求的来源
把当前请求的主机与服务器的主机进行比对,如果不一样则就是恶意链接,反之则是正常链接。如果请求不是通过本站的超链接发出的,做相应操作。
例如,你有一个访问某资源的网址,但是你事先不知道这个网址是有防盗链的,那么当你输入该网址时你可能会发现,并没有马上跳转到你想要的资源页面而是一些无关的信息页面,但是就是在这些信息页面中你发现有一个超链接或是其他操作可以跳转到你所访问的最终资源页面。
Request.java
package net.csdn.request;import java.io.IOException;
import java.io.PrintWriter;import java.util.Enumeration
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Request extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
getDoorChain(request, response);
}
private void getDoorChain(HttpServletRequest request,HttpServletResponse response) throws IOException {
String referer = request.getHeader("referer");
if(referer==null || !referer.contains("localhost")){
response.sendRedirect("http://www.baidu.com");//本站访问那个资源的链接的页面
return;
}
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset =utf-8");
PrintWriter out = response.getWriter();
out.write("下载马上开始。。。");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}