http(超文本传输协议)

一、Http概述

HTTP(HyperText transport protocol)协议是客户端和服务器端进行交互遵循的通信协议,是一种能够获取如 HTML 这样的网络资源的 protocol(通讯协议)。它是在 Web 上进行数据交换的基础,是一种 client-server 协议,也就是说,请求通常是由像浏览器这样的接受方发起的。

HTTP被设计于20世纪90年代初期,是一种可扩展的协议。它是应用层的协议,通过TCP,或者是TLS-加密的TCP连接来发送,理论上任何可靠的传输协议都可以使用。因为其良好的扩展性,时至今日,它不仅被用来传输超文本文档,还用来传输图片、视频或者向服务器发送如HTML表单这样的信息。HTTP还可以根据网页需求,仅获取部分Web文档内容更新网页。
在这里插入图片描述

请求报文:请求头 请求行 请求体

请求头:Authorization Content-Type

请求行:请求的方法 url路径 http协议版本(http1.0,http1.1,http2)

请求体:get 携带参数不在请求体中 在url地址栏(不安全)

​ post 携带参数在请求体中

响应报文:响应头 响应行 响应体

响应头:Content-Type(设置数据格式)

响应行:http1.1(http协议版本号) 200(响应协议的状态码) OK(状态码描述)

响应体:{status:200,message:“更新成功”,data:[{name}]}
HTTP报文的分类有两种:请求报文和响应报文。顾名思义,请求报文就是客户端向服务端发送请求的信号,响应报文就是服务端响应处理后回传给客户端的信号。

二、Http协议格式

1.请求报文

HTTP 请求报文由四部分组成,分别是 请求行、请求头、空行和请求体,其中空行也是组成部分之一,作用是进行分隔,必不可少。
在这里插入图片描述

(1)请求行

第一行为请求行,由 请求方法、URL和HTTP协议版本3个字段组成,它们之间用空格分隔,最后以回车和换行符结尾进行内容分割,表示接下来的内容(下一行开始的)不是请求行的内容。举例,GET /index.php HTTP/1.1,GET是请求方法,/index.php是URL,HTTP/1.1表示使用的HTTP版本为1.1。

这一行比较好理解,只有请求方法的类型比较多,有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT,其中GET、POST最为常用,这里详细介绍下。

GET和POST方法的区别?

  • GET:

    1.get携带的参数携带在url的地址栏 数据保密不安全

    2.传输的数据大小有限制 一半不超过1024个字符

  • POST:

    1.post携带的参数携带在请求体中,数据保密安全

    2.传输数据大小没有限制 一般可以传输大量数据

(2)请求头

请求头里保存的是请求的属性, 冒号“:”(英文)分割的键值对;每组属性之间使用\n分隔;遇到空行表示请求头部分结束。请求头部告知服务器所有有关于客户端请求的信息

典型的请求头有:

User-Agent:产生请求的用户代理信息(浏览器信息): Mozilla/5.0 (Macintosh; Intel Mac OS X
10_12_3) AppleWebKit/537.36等;

Accept:客户端可识别的内容类型列 :text/html,application/xhtml+xml,application/xml;

Accept-Language:客户端可接受的自然语言 - zh-CN,zh;q=0.8,en;q=0.6,id;q=0.4;

Accept-Encoding:客户端可接受的编码压缩格式 - gzip, deflate, sdch, br

Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

connection:连接方式,有close和keep-alive两种。

close:告诉WEB服务器或代理服务器,在完成本次请求的响应后,断开连接

keep-alive:告诉WEB服务器或代理服务器。在完成本次请求的响应后,保持连接,以等待后续请求

Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie - PSTM=1490844191;
BIDUPSID=2145FF54639208435F60E1E165379255;

(3)空行

用户进行内容分割,表示请求头到此为止,下一行的内容不再是请求头。

(4)请求体

请求体包含的就是请求数据,正如上文提到的,当使用的是GET方法的时候,没有请求体

2.响应报文

客户端向服务端发送请求之后,服务器接收并处理客户端发过来的请求后正常情况下会返回一个HTTP的响应消息,这个就是响应报文。

HTTP响应也由四个部分组成,分别是:状态行、响应头、空行和响应体。形式上除了状态行之外,其他三个部分与请求报文类似。
在这里插入图片描述

(1)状态行(响应行)

格式为:HTTP-Version Status-Code Reason-Phrase CRLF。其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

1xx:指示信息–表示请求已接收,继续处理。

2xx:成功–表示请求已被成功接收、理解、接受。

3xx:重定向–要完成请求必须进行更进一步的操作。

4xx:客户端错误–请求有语法错误或请求无法实现。

5xx:服务器端错误–服务器未能实现合法的请求。

各类型常见状态代码、状态描述的说明如下:

200 OK:客户端请求成功。

400 Bad Request:客户端请求有语法错误,不能被服务器所理解。

401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。

403 Forbidden:服务器收到请求,但是拒绝提供服务。

404 Not Found:请求资源不存在,举个例子:输入了错误的URL500 Internal Server Error:服务器发生不可预期的错误。

503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常,举个例子:HTTP/1.1 200 OKCRLF)。
(2)响应头

服务器通过响应头来控制浏览器的行为,不同的头浏览器操作不同

和请求报文的请求头类似,响应头也由键值对组成,每行一对,键和值用英文冒号 : 分隔。响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息
典型的响应头有:

Server:包含处理请求的原始服务器的软件信息;

Date:服务器日期;

Content-Type:返回的资源类型 (MIME);

Connection:连接方式;

close:连接已经关闭;

keep-alive:连接已保持,在等待本次连接的后续请求;

Cache-Control:缓存控制;

Expires:设置过期时间;

Set-Cookie:设置 Cookie 信息。

(3)空行

作为内容分割,表示以下不再是响应头的内容。

(4)响应体

这个是服务器返回给浏览器的响应信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值