1、概述
1.1 Http协议简介
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
它是一个无状态的协议,即客户端第二次向服务器访问同一个资源时,服务器无法识别出这是第几次访问。这样的好处是简化了服务器的设计,使其能够更好地支持大并发量的http访问。
1.2 Http协议通信过程
OSI七层模型和TCP/IP五层模型:
Http分层解析:
(1)客户端通过浏览器输入域名后,DNS通过HTTP协议将域名解析成对应的ip地址;
(2)传输层通过UDP/TCP协议和server建立连接(三次握手);
(3)握手成功后,组装http报文并发送到server;
(4)server接收到报文,解析报文,发送响应数据;
(5)browser接收到响应数据,解析数据,渲染页面。
2、Http协议常用的请求方式
2.1 常用请求方式的作用与区别
请求方式 | 作用 | 说明 |
---|---|---|
get | 向服务器请求资源 | 直接请求一个url,或者将请求参数用‘?’拼接在url后,多个参数间用‘&’分隔 |
post | 向指定资源提交数据,修改或创建资源 | 将请求数据以key:value形式封装在http协议的请求body中,可以传输大量的数据 |
put | 更新指定资源 | 请求参数封装在body中 |
delete | 删除request-url所标识的资源 | |
options | 使服务器传回该资源所支持的所有HTTP请求方法 | 向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作 |
注:对于get和post来说,实际上其url长度和body长度是不具有限制的,但一般浏览器和服务器会对其做出限制,不同浏览器和服务器的限制可能不同。
2.2 部分参数说明
body中的请求数据有四种类型:
- application/json:json格式
- application/x-www-form-urlencoded:浏览器原生表单
- multipart/form-data:表单格式
- text/xml:这种直接传的 xml 格式
3、Http协议请求报文格式
- 请求行:请求方法 url 协议版本
- 请求头:
User-Agent:产生请求的浏览器类型;
Accept:客户端可识别的响应内容类型列表;星号 “ * ” 用于按范围将类型分组,用 “ / ” 指示可接受全部类型,用“ type/* ”指示可接受 type 类型的所有子类型;
Accept-Language:客户端可接受的自然语言;
Accept-Encoding:客户端可接受的编码压缩格式;
Accept-Charset:可接受的应答的字符集;
Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
connection:连接方式(close 或 keepalive);
Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie; - 请求体:请求的数据
4、Http协议响应报文格式
- 响应行:HTTP/1.1 200 OK
- 响应头:
Location:Location响应报头域用于重定向接受者到一个新的位置。例如:客户端所请求的页面已不存在原先的位置,为了让客户端重定向到这个页面新的位置,服务器端可以发回Location响应报头后使用重定向语句,让客户端去访问新的域名所对应的服务器上的资源;
Server:Server 响应报头域包含了服务器用来处理请求的软件信息及其版本。它和 User-Agent 请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户端软件(浏览器)和操作系统的信息。
Vary:指示不可缓存的请求头列表;
Connection:连接方式;
对于请求来说:close(告诉 WEB 服务器或者代理服务器,在完成本次请求的响应后,断开连接,不等待本次连接的后续请求了)。keepalive(告诉WEB服务器或者代理服务器,在完成本次请求的响应后,保持连接,等待本次连接的后续请求);
对于响应来说:close(连接已经关闭); keepalive(连接保持着,在等待本次连接的后续请求); Keep-Alive:如果浏览器请求保持连接,则该头部表明希望WEB 服务器保持连接多长时间(秒);例如:Keep-Alive:300;
WWW-Authenticate:WWW-Authenticate响应报头域必须被包含在401 (未授权的)响应消息中,这个报头域和前面讲到的Authorization 请求报头域是相关的,当客户端收到 401 响应消息,就要决定是否请求服务器对其进行验证。如果要求服务器对其进行验证,就可以发送一个包含了Authorization 报头域的请求; - 响应体:响应正文
5、响应状态码
状态码 | 类别 | 含义 |
---|---|---|
1xx | Informational | 接受的请求正在处理 |
2xx | Success | 请求正常处理完毕 |
3xx | Rederection | 需要进行附加操作以完成请求 |
4xx | Client Error | 服务器无法处理请求,如400代表请求语法错误导致服务无法识别;401代表需要授权;403代表拒绝提供服务;404代表服务器找不到资源 |
5xx | Server Error | 服务器处理请求出错,如500代表服务器内部错误;502网关错误;504网关超时 |