为了向同事说明referer判断来源地址可以伪装,写了这个例子,网上php,asp之类的很多,而java的可能因为太简单反而没有人写,所以把这段代码放到这里。
public class webclient {
/**
* 这个类用来模拟客户端模拟referer。
* t.jsp是远程服务器上的文件,通过request.getHeader("referer");获取客户端的来源地址,并输出。
*/
public static void main(String[] args) throws Exception{
HttpClient http = new HttpClient();
GetMethod get = new GetMethod("http://*****/t.jsp");
try{
get.addRequestHeader("accept-encoding", "gzip,deflate"); //支持gzip
get.addRequestHeader("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)"); //模拟浏览器
get.addRequestHeader("referer","a.jsp"); //就这行就好
int er = http.executeMethod(get);
if(er==200){
System.out.println(get.getResponseContentLength());
String html = get.getResponseBodyAsString();
System.out.println(html); //页面代码
System.out.println(html.getBytes().length); //输出文件的长度
}
}finally{
get.releaseConnection();
}
}
}
因此如果是用来做权限或者防盗链的话,建议使用session来处理