HTTP结构、版本、请求方法、HTTPS加密过程面试必备

在这里插入图片描述

HTTP(HyperText Transfer Protocol)

定义:HTTP 是无状态的应用层协议,用于在 Web 上传输数据,如 HTML 文件、图片等。

特性

  • 无状态:每个请求都是独立的,不会记住之前的请求信息。
  • 端口:默认使用端口 80。
  • 加密:未加密,数据在传输过程中可以被监听或篡改。

HTTPS(HyperText Transfer Protocol Secure)

定义:HTTPS 是在 HTTP 上添加了 SSL/TLS 加密层的安全协议,用于保护数J据传输的安全性。
特性

  • 安全性:通过 SSL/TLS 协议对数据进行加密,防止数据在传输过程中被窃听或篡改。
  • 身份验证:确保通信双方的身份,防止中间人攻击。
  • 端口:默认使用端口 443。
  • SEO 优势:搜索引擎(如 Google)对 HTTPS 网站给予更高的排名。

HTTP消息结构

HTTP 请求消息结构
  1. 请求行
    包含 HTTP 方法(如 GET、POST 等)、请求目标(URL)和 HTTP 版本。
  2. 请求头
    包含多个字段,用于提供客户端信息、请求上下文和其他相关数据。
  3. 空行
    请求头与请求体之间需要一个空行,以标识头部的结束。
  4. 请求体
    包含发送到服务器的数据,通常在 POST 或 PUT 请求中使用。

HTTP 响应消息结构

  1. 状态行
  • 包含 HTTP 版本、状态码和状态描述。
  1. 响应头
  • 提供服务器信息、响应上下文和其他相关数据。
  1. 空行
  • 响应头与响应体之间需要一个空行,以标识头部的结束。
  1. 响应体
  • 包含实际返回的数据,如 HTML 文档、JSON 数据等。

常见的HTTP请求

1. GET
  • 用途:请求指定的资源,主要用于获取数据。
  • 特点
    • 请求的数据附加在 URL 中(查询字符串)。
    • 不会对服务器的状态造成影响(幂等性)。
    • 可被缓存,并且可以通过书签保存。
2. POST
  • 用途:向指定资源提交数据,通常用于创建新资源。
  • 特点
    • 数据放置在请求体中,而不是 URL 中。
    • 可能导致服务器状态变化(非幂等性)。
    • 通常不被缓存。
3. PUT
  • 用途:更新指定的资源或创建资源(如果资源不存在)。
  • 特点
    • 数据放置在请求体中。
    • 是幂等的:多次请求结果相同。
4. DELETE
  • 用途:请求删除指定的资源。
  • 特点
    • 也是幂等的:多次请求应产生相同的效果。
5. PATCH
  • 用途:部分更新指定资源。
  • 特点
    • 只需发送要更新的数据,而不是整个资源。
    • 通常用于局部修改。
6. HEAD
  • 用途:类似于 GET,但只请求响应头,不返回响应体。
  • 特点
    • 用于获取元信息,如内容类型和长度,适合检查资源是否存在。
7. OPTIONS
  • 用途:请求指定资源的支持方法。
  • 特点
    • 允许客户端询问服务器支持哪些 HTTP 方法。
8. TRACE
  • 用途:用于诊断,回显服务器收到的请求,用于测试和诊断。
  • 特点
    • 一般不常用,可能存在安全风险。
针对大数据展示做处理/vuebigdata/src/store/index.js
import axios from 'axios';

// GET 请求
axios.get('/api/endpoint')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

// POST 请求
axios.post('/api/endpoint', { data: 'yourData' })
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

// PUT 请求
axios.put('/api/endpoint/1', { data: 'updatedData' })
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

// DELETE 请求
axios.delete('/api/endpoint/1')
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });
// PATCH 请求
axios.patch('/api/endpoint/1', { data: 'partialUpdate' })
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });

详细说说get请求与post请求有什么区别?

GET:用于请求数据或获取数据、通过URL查询字符串传递、数据暴露在 URL 中,容易被缓存和记录在浏览器历史中,因此安全性较低、多次请求相同的 GET 方法不会改变服务器状态、可以被浏览器和中间代理缓存,有助于提高性能。

POST: 用于提交数据或向服务器发送信息。数据包含在请求体中,而不是 URL 中、适合传输敏感信息,但仍需结合 HTTPS 加密确保安全、每次请求可能会导致服务器状态变化(例如创建新资源)、通常不被缓存,因为它用于修改服务器状态。

HTTP1.0与HTTP1.1的区别?

持久连接

HTTP1.0:默认情况下,每个请求都会建立一个新的 TCP 连接,完成后立即关闭连接。这种方式效率较低,增加了延迟和资源消耗。

HTTP1.1: 默认使用持久连接(Keep-Alive),允许在同一连接上发送多个请求和响应,减少了连接建立和关闭的开销。

请求/响应头

HTTP1.0:请求和响应头部较少,无法处理许多现代 Web 应用所需的信息。

增加了许多新的请求和响应头部字段,例如 HostExpectIf-Modified-Since 等,使得协议更加灵活和强大

状态码

HTTP/1.0:支持的状态码较少,不能很好地表达各种错误或响应情况。
HTTP/1.1:引入了更多的状态码,例如 100 (Continue)206 (Partial Content) 等,提供了更丰富的响应信息。

分块传输

HTTP/1.0:不支持分块传输编码,要求在发送响应之前知道内容的大小。

HTTP/1.1:支持分块传输编码,允许在不知道内容大小的情况下逐块发送数据,这对于动态生成的内容非常有用。

管道化

并行请求:客户端可以在接收到上一个请求的响应之前,向服务器发送多个请求。这减少了因网络延迟造成的等待时间,提高了传输效率。

HTTP2

  1. 二进制协议
    • HTTP/2 使用二进制格式,而不是文本格式。这使得解析更高效,减少了错误的可能性。
  2. 多路复用
    • 允许在同一连接上并行发送多个请求和响应,而不需要按照顺序处理。这消除了 HTTP/1.x 中的队头阻塞问题。
  3. 服务器推送
    • 服务器可以主动向客户端推送资源,即使客户端没有明确请求。这有助于加快页面加载速度。
  4. 头部压缩
    • 使用 HPACK 算法对请求和响应的头部进行压缩,减少了传输的数据量,提高了效率。
  5. 优先级
    • 客户端可以为请求设置优先级,帮助服务器合理调度资源,提高重要资源的加载速度。

HTTP3

  1. 基于 QUIC(Quick UDP Internet Connections):
  • HTTP/3 使用 QUIC 协议,而不是传统的 TCP。这减少了连接建立的延迟,并优化了数据传输。
  1. 零延迟连接建立
  • QUIC 能够实现更快的连接建立,允许客户端和服务器之间迅速开始数据交换,减少了传统 TCP/TLS 握手带来的延迟。
  1. 多路复用
  • HTTP/3 继续支持多路复用,但由于 QUIC 的设计,避免了 HTTP/2 中的队头阻塞问题,允许多个请求并发处理而不互相影响。
  1. 拥塞控制
  • QUIC 提供了先进的拥塞控制算法,可以根据网络状况动态调整数据发送速率,从而提升性能。
  1. 内置加密
    • QUIC 将加密作为核心功能,确保所有传输的数据都是加密的,提高了数据安全性。

HTTPS加密过程

TLS/SSL协议: 作为TCP与HTTP之间的安全层,提供数据加密和身份验证。介于TCP与HTTP之间安全协议

基本算法
  • 散列函数: 用于验证数据的完整性,如MD5、SHA-1和SHA-256,具有单向性和固定输出长度的特点。
  • 对称加密: 使用相同的密钥进行加密和解密,常见算法包括AES和DES。密钥的安全性至关重要。
  • 非对称加密: 使用一对公钥和私钥来实现身份认证和密钥协商,常见算法有RSA和ECC。非对称加密速度较慢,通常不用于大规模数据传输。
TLS/SSL的工作方式
  • 客户端首先与服务端通过非对称加密交换信息,实现身份验证并协商对称加密密钥。
  • 一旦协商完成,使用对称加密算法进行实际的数据传输,以提高效率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值