标签:chain The https exception info servlet name 顺序 server
1.HTTP协议
常见协议: HTTP协议,scoket: TPC/UDP ,HTTPS协议SSL+安全认证证书,FTP
HTTP协议:超文本传输协议,用来客户端与服务器之间进行数据传输格式的协议,支持无连接也支持无状态
无连接
代表的是一次连接只能处理一次请求.
无状态
不会记录事务,代表不保存状态,HTTP协议自身不对客户端和服务器的状态进行保存,也就是说请求和响应不做持久化处理
同步:阻塞,HTTP建立连接口只能处理一次请求,按顺序执行,当当前请求没有结束,其他不能
再次发送请求
异步:不会等待服务器做出相应。发送完请求后就结束
2.时间戳:版本更新,解决浏览器缓存
缓存:200 from memory cache 不访问服务器,直接读取缓存 ,从内存当中读取
200 from disk cache 不访问服务器,直接读取缓存,从磁盘当中读取
304 访问服务器,发现数据没有更新,服务器返回次状态码,然后再从缓存中读取数据
3.防盗链
Java代码手段防止非法请求,思路如下:
1.获取到当前请求的域名,如www.a.com
2.获取到请求资源的上一个地址
3.判断上一个地址是否为空,如果为空代表的是直接访问的资源,非法
还有一种情况就是B项目访问时上一个地址www.b.com/xxx 不是资源所在地址,非法
新建一个过滤器,实现逻辑,如果非法则显示图像,拦截return ,否则放行
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/ffqq.png").forward(request, response); return; } //放行 chain.doFilter(request, response); } @Override public void init(FilterConfig arg0) throws ServletException { System.out.println("过滤器启动"); } } web.xml配置过滤地址: <filter> <filter-name>imgFilter</filter-name> <filter-class>com.wdksoft.ImageFilter</filter-class> </filter> <filter-mapping> <filter-name>imgFilter</filter-name> <url-pattern>/img/*</url-pattern> </filter-mapping>
效果如下:
正常访问
非法访问
4.重定向机制
标签:chain The https exception info servlet name 顺序 server
原文地址:https://www.cnblogs.com/ws1149939228/p/12259487.html