HTTP的自我总结一下把。

Http简介

  1. http是超文本传输协议在这里插入图片描述
  2. Http是应用层的协议,由请求和响应构成。Http是无状态的协议。
  3. Http的默认端口号为80,https的端口号为443。
  4. 浏览网页都是HTTP的主要应用。

HTTP的特点

  1. 简单快速,只需传送请求方法和路径
  2. 灵活,HTTP允许传输任何类型的数据对象,只要在content-type上加以标记。
  3. HTTP0.9和HTTP1.0使用非持续连接,限制每次连接只能处理一个请求,服务器处理完请求后,并受到客户的应答后,就断开连接,HTTP1.1使用持续连接,不必为每个web创建一个新的连接,一个连接可以传送多个对象。
  4. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP的简单工作流程概述

一次HTTP操作成为一个事务,工作过程简单分为4步:

  1. 客户端和服务器需要建立连接,点击某个连接,HTTP的工作开始。
  2. 建立连接后,客户端发送请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
  3. 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
  4. 客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

如果以上过程某一步出现错误,那么产生的错误信息将返回给客户端。

HTTP的请求体Request

请求体由请求行,请求体,空行,请求数据四个部分组成

  • 第一部分:请求行,用来说明请求类型,要访问的资源以及所使用的HTTP版本。
  • 第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息。
  • 第三部分:空行,请求头部后面的空行是必须的。
  • 第四部分:请求数据也叫主体,可以添加任意的其他数据。
    在这里插入图片描述

HTTP的响应体Response

服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应体
HTTP的响应体由四个部分组成:状态行,消息报头,空行和响应正文
在这里插入图片描述

  • 第一部分:状态行,由HTTP的协议版本号,状态码,状态消息三部分组成。
  • 第二部分:消息报头,用来说明客户端要使用的一些附加消息。
  • 第三部分:空行,消息报头后面的空行是必须的。
  • 第四部分:响应正文,服务器返回给客户端的文本消息。

HTTP之状态码

状态代码三位数字组成,第一个数字定义了响应的类别。分了五种类别:

  • 1xx :表示请求成功接收,可以继续处理。
  • 2xx : 表示请求成功接收,理解,接受。
  • 3xx : 表示重定向,要完成请求的话必须进行更进一步的操作。
  • 4xx : 客户端错误,请求有语法错误或者请求无法实现。(看的最多的就是404啦 >_< )
  • 5xx : 服务器内部错误。服务器处理请求时出错。

常见的HTTP状态码

  • 200 OK : 表示服务端正确处理了客户端发送过来的请求。
  • 204 No Content : 表示服务端正确处理请求,但没有报文实体要返回。
  • 206 Partial Content :表示服务端正确处理了客户端的范围请求,并按照请求范围返回该指定范围内的实体内容。
  • 301 Moved Permanently:永久性重定向,若之前的URI保存到了书签,则更新书签中的URI。
  • 302 Found:临时重定向,该重定向不会变更书签中的内容。
  • 303 See Other:临时重定向,与302功能相同,但是303状态吗明确表示客户端应当采用GET方法获取资源。
  • 304 Not Modified: 资源未变更,该状态码与重定向并没有什么关系,当返回该状态码时,告诉客户端请求的资源并没有更新,响应报文体中并不会返回所请求的内容。
  • 400 Bad Request: 错误请求,表示请求报文中包含语法错误。
  • 401 Unauthorized:请求未认证,表示此发送的请求需要客户端进行HTTP认证。
  • 404 Not Found:找不到相应的资源,表示服务器找不到客户端请求的资源。
  • 500 Internal Server Error:服务器内部错误,表示服务器在处理请求时出现了错误,发生了异常。
  • 503 Service Unavailable:服务不可用,表示服务器处于停机状态,无法处理客户端发来的请求。

HTTP工作原理

简单的概述下HTTP的请求和响应的步骤:

  1. 客户端连接web服务器。
  2. 发送HTTP请求。
  3. 服务器接受请求并返回HTTP响应。
  4. 释放连接TCP连接。
  5. 客户端浏览器解析HTTP内容。

HTTP协议的幂等性

  1. HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用
  2. 副作用的啥意思是:指当你发送完一个请求后,网站上的资源状态没有发生修改,即认为无副作用

HTTP的GET/POST/PUT/DELETE方法的幂等情况

  1. get是幂等的,无副作用,使用多次get请求获取数据,订单资源不会变化。
  2. dele/put是幂等的,有副作用,多次请求,只会发生一次变化,但多次刷新请求,最终状态都是一致的。
  3. POST是幂等的,有副作用。多次请求,此时可能会创建多个资源,这个资源会多次变化的,每次请求的资源状态都会变化。

GET和POST请求的区别

1. WEB的角度分析

1. GET使用URL或Cookie传参。而POST将数据放在BODY中。
2. GET的URL会有长度上的限制,则POST的数据则可以非常大。
3. POST比GET安全,因为数据在地址栏上不可见。

2. GET和POST与数据如何传递没有关系

GET和POST是由HTTP协议定义的。在HTTP协议中,Method和Data(URL, Body, Header)是正交的两个概念,也就是说,使用哪个Method与应用层的数据如何传输是没有相互关系的

HTTP没有要求,如果Method是POST数据就要放在BODY中。也没有要求,如果Method是GET,数据(参数)就一定要放在URL中而不能放在BODY中。

3.HTTP协议对GET和POST都没有对长度的限制

HTTP协议明确地指出了,HTTP头和Body都没有长度的要求。而对于URL长度上的限制,有两方面的原因造成:

1.浏览器:据说早期的浏览器会对URL长度做限制。据说IE对URL长度会限制在2048个字符内。

2.服务器:URL长了,对服务器处理也是一种负担。多数服务器出于安全啦、稳定啦方面的考虑,会给URL长度加限制。但是这个限制是针对所有HTTP请求的,与GET、POST没有关系。

这只是HTML标准对HTTP协议的用法的约定

划重点,以下纯属个人观点!!!

如果纯粹的从http协议上说的话,GET和POST的请求区别在于一个用于获取数据。一个用于在服务器内创建资源,具体请参考RFC文档

HTTP的自我总结一下把,一步一个脚印!!继续加油!!

猜你喜欢

转载自blog.csdn.net/weixin_41649090/article/details/88776826