关于Tomcat服务器过滤的问题,高手请进!
想用Tomcat对输入的链接进行过滤,提取referer头,然后进行检查,用这种方式进行防盗链
具体的方法为:
在tomcat的conf中的server.xml中添加了
<Valve className="org.apache.catalina.valves.RequestHeaderValve" header="Referer" deny="*.mydomain.com, *localhost*"/>
其中RequestHeaderValve是自己写的一个类:
package org.apache.catalina.valves;
import java.io.IOException;
import javax.servlet.ServletException;
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
public final class RequestHeaderValve extends RequestFilterValve{
private String header = "";
public void invoke(Request request, Response response) throws IOException, ServletException {
String headervalue = request.getRequest().getHeader(getHeader());
System.out.println("$$$$$$$$$$$$$" + headervalue);
String URI = request.getRequestURI();
String referer = request.getHeader("referer");
System.out.println("$$$$$$$$$$$$$" + referer);
String sitePart = request.getServerName() + "/upload";
System.out.println("1=======================" + URI + "--------------------------");
System.out.println("12=======================" + sitePart + "--------------------------");
if(URI.startsWith("/upload")){
if(referer == null || !referer.startsWith("http://" + request.getServerName())){
System.out.println("3+++++++++++++++++++This is NG!++++++++++++++++++++++++++");
return;
}else{
System.out.println("4-------------------This is OK!--------------------------");
}
}else{
}
System.out.println("goout~");
headervalue = headervalue != null ? headervalue : "";
System.out.println("$$$$$$$$$$$$$" + headervalue);
process(headervalue, request, response);
}
public String getHeader() {
return header;
}
public void setHeader(String header) {
this.header = header;
}
}
运行是可以的,但是不管输入什么网址都进入不了网站,
请问invoke以后用什么方式可以正常返回,继续执行接下来的操作!
在线等~~~