什么是时间戳?
时间戳作用
防止缓存,解决版本更新代码不同步的问题。如果不加时间戳,当http相应状态为304时,从本地缓存中读取资源,而没有请求到服务器。
http状态304 表示从本地读取。
解决非法盗用资源的方法?
通过判断Referer来源进行过滤,代码如下。
public class ImgFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String referer = request.getHeader("referer");
System.out.println("refer is" + "" + referer);
if (referer == null || !referer.contains(request.getServerName())) {
request.getRequestDispatcher("/static/error.png").forward(request, response);
} else {
filterChain.doFilter(request, response);
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
重定向的实现原理和转发的区别
客户端向服务器端发送请求,如果收到状态码为302,它会取Location里面的值,本地浏览器帮你跳转到Location,一般重定向在外部服务器,不会在本地服务器的,而转发一般在本地服务器,所以重定向转发后阈值会失效。