zoukankan      html  css  js  c++  java
  • web高级第一节

    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+"	"+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.重定向机制

  • 相关阅读:
    使用ParseExact方法将字符串转换为日期格式
    Windows 备用数据流(ADS)的妙用___转载
    ms17_010利用复现(32位)
    将手机号设置为空号
    PowerShell批量创建文件夹
    让程序显示运行时间
    使用Sleep方法延迟时间
    使用TimeSpan对象获取时间间隔
    DateTime小综合
    DDMS介绍
  • 原文地址:https://www.cnblogs.com/ws1149939228/p/12259487.html
Copyright © 2011-2022 走看看