前言
-
HTTP 基于 TCP/IP 通信协议来传递数据
-
HTTP 基于客户端/服务器(C/S)结构模型
-
通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议
-
限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节约传输时间
-
只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
-
Multipurpose Internet Mail Extension type 多用途互联网邮件扩展类型
-
协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快
-
HTTP报文定义:在客户端与服务端之间发送的数据块。这些数据块以一些文本的元信息(meta-information)开头,描述了报文的内容及含义,后面跟着可选的数据部分,这些报文在客户端、服务器和代理之间流动。所以HTTP报文的发送也叫报文流
-
每条HTTP报文包含一个客户端请求和服务器响应(请求报文Request 和 响应报文Response)

报文的组成
-
对报文进行描述的起始行
-
包含属性的首部 / 头部(header)
-
包含数据的主体(body) (可选项)


基本格式

报文的分类
- GENERAL(通用报)
- REQUEST HEADERS(请求报)
- RESPONSE HEADERS(响应报)
请求方式
GET/POST
OPTIONS:返回服务器针对特定资源所支持的HTTP请求方式
HEAD:返回与 GET 请求相一致的响应,响应体被返回
PUT:向指定资源位置上传其最新内容(form表单不支持)
DELETE:请求服务器删除Request-URI 所识别的资源(form表单不支持)
TRACE:回显服务器收到的请求,主要用于测试或者诊断
CONNECT:连接改为管道方式的代理服务器
-
put 上传资源,form表单不支持,提交即存储的原则(无验证机制,安全漏洞)、需配置服务器支持 put 方式转发打给后端操作
-
delete 删除资源,form表单不支持、提交即删除的原则(无验证机制,安全漏洞)、需配置服务器支持 delete 方式转发打给后端操作
-
post 修改资源
-
get 获取资源
get/post访问
-
POST 更安全:不会作为 url 的一部分,不会被缓存。保存在服务器日志和浏览器记录中
-
POST 发送的数据更大(GET有 url 长度限制):
长度限制:IE(2083字节)、firefox(65536字节)、chrome(8182字节)、safari(80000字节)、opera(190000字节)
-
POST 能发送更多的数据类型(各种类型的文件)
-
POST 比 GET 速度慢
-
POST 请求头包含更多内容
-
POST 接收数据之前会先请求头发送给服务器确认,然后发送数据
- 第三次握手,浏览器确认并发送 post 请求头
- 服务器返回状态码100后,continue响应
- 浏览器开始发送数据
- 服务器返回 200 Ok 响应
-
get 过程
- 第三次握手,浏览器确认并发送请求头和数据
- 服务器返回 200 OK 响应
-
GET会进行数据缓存,POST不会
-
POST不能进行管道化传输
-
串行连接

持久化连接
connection:keep-alive:(HTTP/1.0、1.1) 连接不会关闭

管道化持久化连接
(http/1.1 -> 把所有请求放到发送队列里,不等响应,一个一个发送请求的同时接收相应的响应)
