HTTP协议和防盗链

http 协议:

  对浏览器客户端和服务器端之间数据传输的格式规范   支持无连接和无状态 http 协议版本   http1.0:当前浏览器客户端与服务器端建立连接之后,        只能发送一次请求,一次请求之后连接关闭。   http1.1:当前浏览器客户端与服务器端建立连接之后,        可以在一次连接中发送多次请求。 tcp协议:   以二进制文件格式传输 常见的请求方式:    GET 、 POST、 HEAD、 TRACE、 PUT、 CONNECT 、DELETE    POST:常用于表单提交,携带数据,数据封装在请求体中    GET:url地址栏中显示数据;K=Y形式传输 常用的请求方式:    GET 和 POST 同步:   会发生阻塞HTTP建立连接后只能处理一次请求,会按顺序执行,当前请求没结束,不能再次发送请求 异步:   不会等待服务器做出相应,发送完请求就结束 无连接:   代表一次连接只能完成一次请求 无状态:   不会记录事务,不会保存状态,Cookie记录

 

 

 

 

 防盗链:

package com.wdksoft;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 过滤图片请求 * @author FLC * */public class ImageFilter implements Filter{ @Override public void destroy() { System.out.println("过滤器销毁"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("dofilter"); //获取到当前请求的连接地址和上一个发送请求的地址 HttpServletRequest httprequest=(HttpServletRequest)request; HttpServletResponse httpresponse=(HttpServletResponse)response; //获取上一个发送请求的连接 String referer = httprequest.getHeader("Referer"); String serverName = httprequest.getServerName(); System.out.println(referer+"\t"+serverName); if(referer==null||!referer.contains(serverName)) { request.getRequestDispatcher("/img/002.png").forward(request, response); return; } //放行 chain.doFilter(request, response); } @Override public void init(FilterConfig arg0) throws ServletException { System.out.println("过滤器启动"); }}

  

 

相关文章