初步理解HTTP协议

    xiaoxiao2022-07-14  149

    什么是Http协议 就是客户端和服务端进行的传输格式,简称超文本传输协议。是基于socket的tcp传输协议。 http无状态协议 当浏览器发送请求给服务器的时候,服务器响应客户端请求。但是当同一个浏览器再次给你服务器发送请求的时候,服务器并不知道它就是刚才那个浏览器。

    HTTP常见的四种请求方式GET、POST、DELETE、PUT

    GET GET用于向服务器获取数据,用来查询下数据,不会修改、增加数据,不会影响资源的内容。 提交的数据最多只能是1024字节,GET请求的数据会附在URL之后,

    POST POST用于向服务器发送新增数据,像insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。 理论上没有数据大小限制,可传较大量的数据,POST请求的数据会附在请求体中 POST的安全性要比GET的安全性高,GET请求会将用户名和密码出现在url中,这种url被浏览器缓存在后,别人通过浏览记录就能获取

    DELETE 就是用来删除某一个资源的,该请求就像数据库的delete操作

    PUT PUT用于向服务器发送修改数据,从而改变信息,像update操作一样,用来修改数据的内容,不会增加数据的种类等。

    Http防盗链思路 应用场景:防止你的图片、js、css等资源被其他项目引入,占用宽带资源。通过过滤器实现 // 获取请求的来源 String referer = request.getHeader("referer"); // 判断来源是否在允许 if (referer == null || !referer.contains(request.getServerName())) { request.getRequestDispatcher("/static/error.png").forward(request, response); } else { filterChain.doFilter(request, response); }

     

    重定向的实现原理 浏览器是根据返回的响应码来判断是否重定向当浏览器收到的响应码是302(重定向)的响应码时,就会去获取响应头中Location对应的value值,根据这个value作为url,浏览器会再次发出请求。 /** * 重定向 * Create by wangxb * 2019-05-24 7:06 */ @Controller public class IndexController { @GetMapping("/index") public void index(HttpServletRequest request, HttpServletResponse response){ response.setStatus(302); response.setHeader("Location","other"); } @GetMapping("/other") public void other(HttpServletRequest request, HttpServletResponse response) throws IOException{ response.getWriter().write("我是重定向过来的"); } }

     

    http和https的区别http http是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全安全性低,效率高 https 是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。https则是具有安全性的ssl加密传输协议底层使用对称加密和非对称加密的混合算法,安全性高(防抓包),效率低 HTTP1.0与HTTP1.1 http1.0属于短链接http1.1属于长链接    长连接与短链接 短连接 浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。       短连接的操作步骤是:  建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接  长链接 当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。  使用长连接的HTTP协议,会在响应头有加入这行代码:Connection:keep-alive      长连接的操作步骤是:  建立连接——数据传输…(保持连接)…数据传输——关闭连接  http默认情况下在300s为空闲状态情况下会主动断开连接;HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接   长连接是什么时候关闭  响应头Keep-Alive: timeout。这个值能够让一些浏览器主动关闭连接,这样服务器就不必要去关闭连接了  自动探测一次,发现对方关闭,则断开连接  长连接和短连接的优点和缺点 长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。对于频繁请求资源的客户来说,较适用长连接。  什么时候用长连接?什么时候用短连接?  

    长连接多用于操作频繁,点对点的通讯,而且连接数不能太多情况,。每个TCP连接都需要三步握手,这需要时间,如果每个操作都是先连接,再操作的话那么处理速度会降低很多,所以每个操作完后都不断开,次处理时直接发送数据包就OK了,不用建立TCP连接。例如:数据库的连接用长连接, 如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

    而像WEB网站的http服务一般都用短链接,因为长连接对于服务端来说会耗费一定的资源,而像WEB网站这么频繁的成千上万甚至上亿客户端的连接用短连接会更省一些资源,如果用长连接,而且同时有成千上万的用户,如果每个用户都占用一个连接的话,那可想而知吧。所以并发量大,但每个用户无需频繁操作情况下需用短连好。

     长连接与短连接应用场景  长连接应用于场景 客户端(移动App)与服务器消息推送、RPC远程调用  短链接应用于调用接口(如果不是很频繁)  
    最新回复(0)