http (Hyper Text Transfer Protocol)
- 最早版本是1991年发布的0.9版。该版本极其简单,只有一个命令GET。
GET /index.html
- 1996年5月,HTTP/1.0 版本发布,内容大大增加 post head方法,引入了HTTP Header概念,让http处理请求和相应更加灵活,传输的数据不再仅限于文本
常用字段,状态码
Content-Type
:application/xx 数据格式不固定,可能是文本也可能是二进制,必须由上层应用程序来解释
Content-Encoding/Accept-Encoding
节约带宽 压缩数据
Conten-Type/Accept
:客户端和服务器进行内容协商
Connection: keep-alive
提议
- 1997年 http 1.1 使用寿命最长 1.0每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。
持久链接Connection: keep-alive
落实
缓存机制Cache-Ccontrol
:no-cache 可以缓存但是使用之前必须要去服务器验证是否过期
管道机制
可以在一次TCP链接中发送多个请求,但是先进先出的机制导致head-of-line blocking
- 2015年http 2 是一个彻底的二进制协议,头信息和数据体都是二进制,并且统称为"帧"(frame):头信息帧和数据帧
浏览器可以随时发送请求,而不必等待前一个请求接收到响应之后;同样,服务器也可以按需决定优先返回哪些内容,而不必在意顺序,因为每份数据都有ID来标识。这样就实现了资源的并行传输。
- http 3
前端的感受
- 请求方法是客户端发出,要求服务器执行的,对资源的一种操作
传输的建立、请求的发起、响应的回传
一个完整的URL
scheme:[//[user[:password]@host[:port]][/path][?query][#fragment]
-
scheme: 使用的协议 FTP HTTP HTTPS
-
user[:password]: FTP 协议中表示访问资源的用户名和密码
-
host:主机 IP地址域名
-
port:端口号 HTTP默认80端口
-
path: 访问资源的路径
-
query:请求数据以?开始
-
fragment:定位锚点 以#开始
常用的Http状态码
HTTP状态码表示服务器响应状态的3位数字,客户端发送请求至目标服务器,服务器响应浏览器的请求并且附带状态码 主要包括 1** (消息) 2** (成功) 3** (重定向) 4** (请求错误) 5** 6**(服务器错误)
HTTP状态码 | 描述 |
---|---|
100 | 继续,继续响应剩余部分,进行提交请求,如果已经完成忽略 |
200 | 成功处理请求 |
301 | 永久移动 |
302 | 临时移动 |
304 | 请求资源未修改 |
401 | 未授权 要求身份验证 |
403 | 禁止 请求被拒绝 |
404 | 未找到资源 |
500 | 服务器错误 |
503 | 服务不可用 |
常用的请求方法
常用HTTP header字段