打开http的大门

HTTP协议: Hyper Text Transfer Protocol(超文本传输协议)

http是无状态、无连接、可靠的基于TCP/IP协议传递数据的,使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

  1. HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  2. HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  3. HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

Http请求

一个HTTP请求报文由请求行(request line)、请求头部(headers)、空行(blank line)和请求数据(request body)4个部分组成。
在这里插入图片描述

  1. 请求行:请求行分为三个部分:请求方法、请求地址URL和HTTP协议版本,它们之间用空格分割。例如,GET /index.html HTTP/1.1。
    1.1. 请求方法:有9种。
    http1.0定义的3种:GET(完整请求一个资源)、POST(提交表单)、PUT(上传文件)
    http1.1新增的六种:DELETE(删除)、PATCH、HEAD(仅请求响应头部)、OPTIONS(返回请求的资源所支持的方法)、TRACE(追求一个资源请求中间所经过的代理)和CONNECT(HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器)。最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。

get
a. 当客户端要从服务器中读取文档时,当点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页的,使用的都是get方式。
b. get方法要求服务器将URL定位的资源放在响应报文的数据部分,发送给客户端。
c. 使用GET方法时,请求参数和对应的值附加在URL后面,利用一个问号'?'代表URL的结尾与请求参数的开始,传递参数长度受限制。
例如,/index.jsp?id=100&op=bind。

通过GET方式传递的数据直接放在地址中,所以GET方式的请求一般不包含“请求内容”部分,请求数据以地址的形式表现在请求行。地址中‘?’之后的部分就是通过GET发送的请求数据,各个数据之间用‘&’符号隔开。显然这种方式不适合传送私密数据。另外,由于不同的浏览器对地址的字符限制也有所不同,一半最多只能识别1024个字符,所以如果需要传送大量数据的时候,也不适合使用GET方式。如果数据是英文字母/数字,原样发送;如果是空格,转换为+;如果是中文/其他字符,则直接把字符串用**BASE64**加密,得出:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

post:
POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据,这样POST方式对传送的数据大小没有限制,而且也不会显示在URL中。POST方式大多用于页面的表单中

POST方式请求行中不包含数据字符串,这些数据保存在“请求内容”部分,各数据之间也是使用‘&’符号隔开。因为POST也能完成GET的功能,因此多数人在设计表单的时候一律都使用POST方式,其实这是一个误区。GET方式也有自己的特点和优势,我们应该根据不同的情况来选择是使用GET还是使用POST。

URL:统一资源定位符,是一种资源位置的抽象唯一识别方法。
组成:<协议>://<主机>:<端口>/<路径>,端口和路径可以省略。
2. 请求头:请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔。请求头部的最后会有一个空行,表示请求头部结束,接下来为请求数据。
3. 请求数据:最常用POST方法,适用于需要客户填写表单的场合。与请求数据相关的最长使用的请求头部是Content-Type和Content-Length
HTTP响应
HTTP响应报文由状态行(status line)、响应头部(headers)、空行(blank line)和响应数据(response body)4个部分组成。
状态行由3部分组成,分别为:协议版本、状态码、状态码扫描。其中协议版本与请求报文一致,状态码描述是对状态码的简单描述。
在这里插入图片描述
2.响应头部
在这里插入图片描述
Http请求过程:

1. 浏览器根据域名解析IP地址
2. 浏览器与服务器建立TCP连接(三次握手)
3. 浏览器向服务器发送HTTP请求
4. 服务端响应HTTP请求,浏览器得到HTML代码 
5. 浏览器解析HTML代码,并请求html中的资源
6. 关闭TCP连接(四次握手),浏览器渲染页面呈现给用户。

详细的文档可以参考菜鸟http教程

猜你喜欢

转载自blog.csdn.net/weixin_42123213/article/details/112917731