HTTP(HyperText Transfer Protocol),中文「超文本传输协议」。html
HTTP 协议工做在客户端-服务端架构上,即浏览器做为客户端经过 URL 向 Web 服务器发送全部请求,Web服务器接收请求后,向浏览器发送响应信息。浏览器
请求报文缓存
组成部分 | 描述 |
---|---|
请求行 | 包含请求方法、URI、HTTP版本。 |
请求头 | 告诉服务器关于客户端请求的信息。 |
空行 | 告诉浏览器下一个是请求体。 |
请求体 | 一条 HTTP 消息要传输的主体。 |
响应报文安全
组成部分 | 描述 |
---|---|
状态行 | 包含HTTP版本、状态码、状态信息 |
响应头 | 相似请求头 |
空行 | 告诉浏览器下一个是响应体 |
响应体 | 相似请求体 |
HTTP 协议是无状态的,请求与请求之间没有联系。服务器
服务器为了知道请求来自哪一个客户,所以 Cookie 技术出现了。网络
Cookie架构
Cookie 包含在 HTTP 的请求头里,读取这个 Cookie 就知道用户是谁了。网站
本质上,Cookie 是一份存储在用户本地的文件,里面包含了每次请求须要传递的信息。加密
在 Chrome 中,经过下面的操做,能够查看浏览器储存的 Cookie。url
设置 > 高级 > 隐私设置与安全性 > 网站设置 > Cookie和网站数据 > 查看全部 Cookie 和网站数据
Session
Cookie 以明文储存在本地,不够安全,须要 Seesion 来解决这个问题。
Session 是存在服务器的,里面包含了用户状态。
而 Cookie 中储存了 Session ID,当浏览器再次请求时,会把这个 Session ID 带上,服务器经过 Session ID 找到对应的 Session。
请求方法 | 描述 |
---|---|
GET | 获取数据 |
POST | 传输数据 |
HEAD | 相似于 GET 请求,用于获取报文首部(请求头)。 |
PUT | 更新数据 |
DELETE | 删除数据 |
GET和POST的区别
HTTP 状态码根据第一个数字不一样,能够分为 5 种类型:
分类 | 描述 |
---|---|
1** | 指示信息-收到请求,继续处理 |
2** | 成功-请求被成功接收 |
3** | 重定向-须要进一步的操做,以完成请求 |
4** | 客户端错误-请求包含语法错误或没法完成请求 |
5** | 服务器错误-服务器在处理请求的过程当中发生了错误 |
常见 HTTP 状态码
版本 | 发布时间 | 简介 |
---|---|---|
HTTP/0.9 | 1991年 | 该版本极其简单,只有一个命令GET ,目前已再也不使用。 |
HTTP/1.0 | 1996 年 5 月 | 引入了多种功能,至今仍在使用当中。 |
HTTP/1.1 | 1997 年 1 月 | 引入持久链接,是目前最流行的版本。 |
HTTP/2 | 2015 年 5 月 | 引入了服务器推送等多种功能,是目前最新的版本。 |
即 Keep-Alive 模式,保持 TCP 一直处于链接状态。
HTTP 协议采用「请求-应答」模式,在普通模式中,每一个请求/应答都要新建一个链接,完成以后当即断开;
当使用 Keep-Alive 模式(持久链接),客户端与服务器的链接持续有效,再次请求,不须要从新创建链接。
http1.0 中默认关闭,经过请求头加入「Connection: Keep-Alive」启用;
http1.1中默认启用,经过请求头加入「Connection: close 」关闭。
即一次性打包全部请求,没必要在传输过程等待服务器响应。
HTTPS 是 HTTP 协议的安全版本。
HTTP 的数据传输是明文的,不安全。HTTPS 使用了 SSL/TLS 协议进行了加密处理。
非对称加密:私钥加密的密文,只能公钥解密;公钥加密的密文,只能用私钥解密。
私钥只给一我的,而公钥能够发给全部的人。
全部未采用 HTTPS 的网站,在 Chrome 68 中将标记为不安全网站。
参考连接
[HTTPS 原理分析——带着疑问层层深刻](