# HTTP

# HTTP 和 HTTPS

# 1. 概念

  • http: 是一个客户端和服务器端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的超文本传输协议。
  • https: 是以安全为目标的 HTTP 通道,即 HTTP 下 加入 SSL 层进行加密。其作用是:建立一个信息安全通道,来确保数据的传输和真实性。

# 2. 区别及优缺点

HTTP是超文本传输协议,信息是明文传输,HTTPS 协议要比 HTTP 协议安全HTTPS 是具有安全性的 SSL 加密传输协议,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。

HTTP 主要特点:简单快速、灵活、无连接、无状态

  • HTTP 协议的默认端口为 80,HTTPS 的默认端口为 443
  • HTTP 的连接很简单,是无状态的。HTTPS 握手阶段比较费时,会使页面加载时间延长 50%,增加 10%~20%的耗电。
  • HTTPS 缓存不如 HTTP 高效,会增加数据开销。
  • HTTPS协议需要 ca 证书,费用较高,功能越强大的证书费用越高。
  • SSL 证书需要绑定 IP,不能再同一个 IP 上绑定多个域名,IPV4 资源支持不了这种消耗。

# 3. 工作原理

客户端在使用 HTTPS 方式与 Web 服务器通信时有以下几个步骤:

  1. 客户端使用 https url 访问服务器,则要求 web 服务器建立 ssl 链接
  2. web 服务器接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),传输给客户端
  3. 客户端和 web 服务器端开始协商 SSL 链接的安全等级,也就是加密等级。
  4. 客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
  5. web 服务器通过自己的私钥解密出会话密钥
  6. web 服务器通过会话密钥加密与客户端之间的通信

传送门 ☞ # 解读 HTTP1/HTTP2/HTTP3 (opens new window)

# HTTP协议类

  1. HTTP报文的组成部分:
  • 请求报文:请求行、请求头、空行、请求体
  • 响应报文:状态行、响应头、空行、响应体
  1. HTTP方法:
方法 释义
GET 获取资源
POST 传输资源
PUT 更新资源
DELETE 删除资源
HEAD 获得报文首部
  1. POST和GET的区别:
GET POST
GET在浏览器回退时是无害的 会再次提交请求
GET产生的URL地址可以被收藏 不可以
GET请求会被浏览器主动缓存 不会,除非手动设置
GET请求只能进行url编码 而POST支持多种编码方式
GET请求参数会被完整保留在浏览器历史记录里 而POST中的参数不会被保留
GET请求在URL中传送的参数是有长度限制的 没有限制
对参数的数据类型,GET只接受ASCII字符 没有限制
GET比POST 更不安全,参数直接暴露在url上,不能用来传递敏感信息 安全
GET参数通过URL 传递 POST放在Request body中
  1. HTTP状态码:
  • 1xx:指示信息 —— 表示请求已接收,继续处理
  • 2xx:成功 —— 表示请求已被成功接收
  • 3xx:重定向 —— 要完成请求必须进行更进一步的操作
  • 4xx:客户端错误 —— 请求有语法错误或请求无法实现
  • 5xx:服务器错误 —— 服务器未能实现合法的请求
200:客户端请求成功
404:请求资源不存在
500:请求未完成,服务器临时过载或宕机,一段时间后可以恢复正常
  1. 持久连接(HTTP1.1版本才有):
  • 普通模式:HTTP协议采用“请求-应答”模式,当使用普通模式,即非Keep-Alive模式时,每个请求/应答客户和服务器都要新建一个连接,完成之后立即断开连接(HTTP协议为无连接协议)
  • Keep-Alive模式:(又称持久连接、连接重用)时,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接
  1. 管线化:

在持久连接的情况下,

请求1 -> 响应1 -> 请求2 -> 响应2

管线化时:

请求1 -> 请求2 -> 响应1 -> 响应2

特点:

  • 管线化机制通过持久连接完成,仅HTTP/1.1 支持此技术
  • 只有GET和HEAD请求可以进行管线化,而POST则有所限制
  • 初次创建连接时不应启动管线机制,因为对方(服务器)不一定支持HTTP/1.1 版本的协议

# 通讯类

  1. 什么是同源策略及限制

    同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。

限制一下方面:

  • Cookie、LocalSrorage和IndexDB无法读取
  • DOM无法获得
  • AJAX请求不能发送
  1. 前后端如何通信
  • Ajax —— 同源通讯
  • WebSocket —— 不受跨域限制
  • CORS —— 支持同源通讯,也支持跨域通讯
  1. 如何创建ajax
  • XMLHttpRequest对象的工作流程
  • 兼容性处理
  • 事件的触发条件
  • 事件的触发顺序
  1. 跨域通讯的几种方式
  • JSONP
  • Hash
  • postMessage
  • WebSocket
  • CORS

# 参考文献

更新时间: 12/14/2021, 10:12:35 AM