HTTP协议
1.HTTP协议简介
1.1. 什么是HTTP协议
中文名: 超文本传输协议 (HyperText Transfer Protocol)
作用是:规定服务器和浏览器信息传递规范
HTTP协议是一个简单的请求–>响应协议。换句话说:
一个请求(request)只能有一个响应(response)
响应(response)是被动的,不能主动发起
它是建立在TCP协议之上(即由TCP协议来负责数据传输)
HTTP默认的端口为80,HTTPS默认端口是443
HTTP协议版本有:HTTP 0.9、HTTP 1.0、HTTP 1.1、HTTP 1.2、HTTP 2.0,目前以HTTP1.1为主
无连接:通俗的说就是,服务器每次只处理一个请求,收到客户端应答后,就立即断开连接。服务器因为每天要处理的请求太多,如果每次都有连接不释放,服务器也会被拖垮。
无状态:通俗的说就是,就是服务器无保存,服务器不会保存请求的任何痕迹。服务器因为每天要处理的请求太多,如果请求有状态的话,服务器性能肯定会受到很大的影响。
简单快速:指传输的报文格式简单、传输的东西少,所以简单快速
灵活:指HTTP协议允许传输的数据类型很多,如:html\json\xml\text等。
2.1.HTTP请求报文介绍
2.2 HTTP请求消息实例
请求报文格式:
第一部分,叫请求行。独占一行。由:请求方法+请求路径+协议和协议版本组成。
第二部分:从第二行至第N行,叫请求头。由键值对组成。可以有1对,也可以有N对。
第三部分:叫空行,独占一行。由回车换行符组成
第四部分:叫请求体或请求正文,一般POST、PUT等方法才有请求体,GET方法没用请求体
注:1、2、3是必须的。期中2中必须有Host,其他根据需求。
2.3 请求方法
主要的请求方法有:GET、POST、DELETE 、PUT 、HEAD 等方法
最最常用的方法就是:GET方法、POST方法
GET方法:
GET 方法提交数据不安全,数据置于请求行,浏览器地址栏可见;
GET 方法URL长度每个浏览器限制数量不同,最后在2000字符以内
GET方法速度快
默认的请求方法,不需要提交大量数据、无敏感、保密数据时使用
可能会被缓存
请求可能会被保留在浏览器历史记录中
POST方法:
POST 方法提交数据安全,数据置于消息主体内,浏览器地址栏不可见
POST 方法提交的数据大小没有限制
POST 方法速度慢
需要提交大量数据、有敏感、保密数据时使用
不会被缓存
请求不会被保留在浏览器历史记录中
- HTTP响应
3.1 HTTP响应报文介绍
3.2 HTTP响应消息实例
响应报文格式:
第一部分:叫状态行。独占一行。由:协议/协议版本、状态码、状态描述符组成
第二部分:从第二行至第N行,叫响应头。由键值对组成。由N对
第三部分:叫空行,独占一行。由回车换行符组成
第四部分:叫响应体。响应回来的数据格式(多种)
3.3 HTTP响应状态码(常见)
200 客户端请求成功
301 永久性重定向
302 临时性重定向
403 服务器收到请求,但拒绝提供服务。
404 请求的资源不存在
500 服务器发生不可预期的错误。
3.4 请求/响应头中,重要的参数
(一)、Content-Type参数
Content-Type,叫:是Internet Media Type,互联网媒体类型。存在于请求中或响应中:
如果出现在请求中,则表示:告诉服务端客户端实际发送的数据类型。
如果出现在响应中,则表示:告诉客户端服务端实际发送的数据类型。
在【请求】中,常见的数据类型有:
application/x-www-form-urlencoded-----> 以“键-值”对的方式组织的数据
application/json -----> JSON 字符串格式提交数据
multipart/form-data-----> 一般需要上传文件的表单则用该类型
最好能用postman 配合 fiddler 抓包,对比以上三种数据格式,在请求包中的组织方式。