超文本传输协议,基于TCP/IP通信协议来传递数据(客户端与服务器可以指定适合的mime-type类型来指定数据,设置contentType告诉浏览器发送给服务器数据的格式,设置dataType表示期望收到服务器返回数据的格式)。
工作原理
HTTP协议工作在客户端-服务器架构上。浏览器作为客户端通过URL向HTTP服务器即WEB服务器发送所有请求。WEB服务器接收到请求后,向客户端发送响应信息。
HTTP特点
支持client/server模式
简单快速灵活
无连接
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户端的请求,并收到客户端应答,就断开连接。
无状态
无状态是指协议对于事务处理没有记忆能力,这意味着如果后续处理需要前面的信息,则必须全部重传,这样可能导致每次连接传送的数据量增大
请求数据信息
请求信息通常包括以下格式:请求行、请求头部、空行、请求数据
响应数据格式
响应数据包括状态行、消息报文、空行、响应正文
HTTP请求的方式
九种请求的方式:GET
、POST
、HEAD
、PUT
、DELETE
、CONNECT
、OPTIONS
、TRACE
、PATCH
序号 | 方法 | 主要用途 |
---|---|---|
1 | GET | 请求获取资源,常用于读取数据 |
2 | POST | 常用于提交数据 |
3 | PUT | 常用于修改数据 |
4 | DELETE | 常用于删除指定资源 |
5 | HEAD | 可以获取服务器响应头信息,常用于查看服务器性能 |
6 | OPTIONS | 请求查询服务器的性能,或者查询与资源相关的选项和需求,常用于查看服务器的性能 |
7 | TRACE | 回响服务器收到的请求信息,常用于HTTP请求的测试或诊断 |
8 | CONNECT | 将连接改为管道方式的代理服务器,常用于SSL加密服务器的链接和非加密的HTTP代理服务器的通信 |
9 | PATCH | 对PUT方法的补充,常用常用于对已知资源进行局部更新 |
相关补充
GET和POST的区别:
相同:使用同一个传输层协议(HTTP协议)
区别:
区别 | GET | POST |
---|---|---|
后退按钮/刷新 | 无害 | 数据会被重新提交 |
缓存 | 能被缓存 | 不能缓存 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded或multipart/form-data |
数据类型限制 | 只允许ASCII字符 | 没有限制 |
历史 | 参数保存在浏览器历史中 | 参数不会保存在浏览器历史中 |
数据长度 | 2-4KB,根据浏览器和服务器不同而变化 | 无限制 |
安全性 | 与POST相比,GET的安全性较差,因为所发送的数据是URL的一部分 | POST比GET更安全,因为请求的参数不会保存在浏览器历史或者WEB服务器中 |
可见性 | 数据在URL中对所有人都是可见的 | 数据不会显示在URL中 |
POST比GET速度慢:因为POST请求在第三次握手的时候,回发送请求头,服务器收到并返回100响应时,浏览器才会发送数据。
HTTP和HTTPS
http存在问题
- 请求信息明文传输,容易被窃听截取
- 数据的完整性未校验,容易被篡改
- 没有验证对方身份,存在冒充危险
为了解决上面问题,https就闪亮登场了
https
https协议:HTTP+SSL/TLS,通过SSL证书来校验服务器的身份,并未服务器与浏览器之间的通信进行加密。
HTTPS传输数据的流程
- 客户端通过URL访问服务器建立SSL连接
- 服务器收到客户端请求后,将网站支持的证书信息(证书以及公钥)发送给客户端
- 客户端的服务器协商SSL连接的安全等级,也就是信息加密的等级
- 客户端的浏览器根据双方同意的安全等级,建立会话密钥,利用服务器提供的公钥加密,发送给服务器
- 服务器利用自己的私钥解密出会话秘钥
- 服务器利用会话秘钥加密与客户端之间的通信
https的缺点
- https协议多次握手,导致页面的加载时间延长近50%
- https连接缓存不如http高效,会增加数据开销和功耗
- 申请SSL证书需要钱,功能越强大的证书费用越高
- SSL涉及到的安全算法会消耗CPU资源,对服务器资源比较大
HTTP与HTTPS主要区别
- HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
- http和https使用连接方式不同,默认端口也不一样,http是80,https是443。