前后端通信 —— HTTP/HTTPS

目录

[一、HTTP/HTTPS 简介](#一、HTTP/HTTPS 简介)

1、HTTP

2、HTTPS

[二、HTTP 工作过程](#二、HTTP 工作过程)

[三、HTTP 消息](#三、HTTP 消息)

1、HTTP消息结构

2、HTTP消息示例

[四、HTTP 方法(常用)](#四、HTTP 方法(常用))

1、GET

2、POST

3、PUT

4、DELETE

5、GET与POST对比

[五、HTTP 状态码(常用)](#五、HTTP 状态码(常用))

[1、HTTP 状态码是什么](#1、HTTP 状态码是什么)

2、常见的HTTP状态码


一、HTTP/HTTPS 简介

1、HTTP

HTTP(Hypertext Transfer Protocol),超文本传输协议;

  • 是一种用于在万维网上传输数据的应用层协议
  • 主要用来定义客户端和服务器之间的通信规则 ,包括请求和响应的格式、方法、状态码等;
  • 是一个基于 TCP/IP 通信协议来传递数据(HTML 文件、图片文件、查询结果等);

2、HTTPS

HTTPS(HyperText Transfer Protocol Secure),超文本传输安全协议;

在 HTTP 上加入 SSL/TLS 协议,为数据传输提供了加密和身份验证,是HTTP的安全版本;

二、HTTP 工作过程

1、客户端发起请求

用户通过客户端(如浏览器)输入 URL,客户端向服务器发起一个 HTTP 请求;

2、服务器处理请求

服务器接收到请求后,根据请求的类型(如GET、POST等)和请求的资源,进行相应的处理;

3、服务器返回响应

服务器将处理结果包装成HTTP响应消息,发送回客户端;

4、客户端渲染页面

客户端接收到响应后,根据响应内容(如HTML、图片等)渲染页面,展示给用户;

三、HTTP 消息

HTTP消息是指,在HTTP协议中,客户端与服务端之间进行数据传输的基本单元;

  • 是前后端通信的基础,由一系列的文本行组成,有着固定的结构和格式;
  • 遵循HTTP协议的规范,确保数据能够在客户端和服务器之间正确、高效地传输;
  • 分为两种类型:请求消息和响应消息;

1、HTTP消息结构

(1)请求消息

(2)响应消息

组成部分 说明
起始行 Start Line * 请求消息:起始行包括请求方法、请求URI、HTTP版本; * 响应消息:起始行包括HTTP版本、状态码、状态文本信息;
头部字段 Headers * 提供了关于消息的元数据,如消息类型、消息大小、消息来源、认证信息等; * 头部字段由不区分大小写的【字段名:字段值】; * 请求头部字段包括User-Agent(用户代理信息)、Accept(可接受的响应内容类型)、Authorization(认证信息)等; * 响应头部字段包括Content-Type(内容类型)、Content-Length(内容长度)、Server(服务器信息)等;
空行 Empty Line * 空行是一个单独的换行符,用于分隔头部字段和消息体(消息体可能没有);
消息体 Body * 消息体包含了请求或响应的实际数据; * 在请求消息中,消息体通常包含要发送给服务器的数据,如表单数据或上传的文件。在响应消息中,消息体通常包含服务器返回的资源内容,如HTML页面、图片、视频等; * 不是所有的HTTP消息都包含消息体;例如,GET请求通常不包含消息体;

2、HTTP消息示例

(1)请求消息

(2)响应消息

四、HTTP 方法(常用)

常用的HTTP方法有:GET、POST、PUT、DELETE;

序号 方法 语义 说明
1 GET 查找 从服务器获取资源。
2 POST 新增 向服务器发送数据以创建新资源。
3 PUT 修改 向服务器发送数据以更新现有资源。
4 DELETE 删除 从服务器删除指定的资源。

这些方法虽然有各自的语义,但并不是强制性的;

1、GET

GET方法,用于从服务器获取资源;

用于请求数据而不对数据进行更改;

例如,从服务器获取数据、图片、文件等;

2、POST

POST方法,用于向服务器发送数据以创建新资源;

常用于提交表单数据或上传文件,发送的数据包含在请求体中;

例如,新增用户、添加商品等;

3、PUT

PUT方法,向服务器发送数据以更新现有资源;

如果资源不存在,则创建新的资源;

例如,用户修改密码、更新商品库存等;

4、DELETE

DELETE方法,从服务器删除指定的资源;

请求中包含要删除的资源标识符;

例如:注销个人账户、删除某个商品信息;

5、GET与POST对比

| | GET 请求 | POST 请求 |
| 用途 | 常用于获取数据,如查询操作; | 常用于创建数据,如表单提交、文件上传等; |
| 数据传递方式 | 将数据作为URL的一部分进行传递,会显示在地址栏中; | 将数据放在请求体中进行传递,不会显示在地址栏中; |
| 数据长度限制 | 对数据的长度有限制,跟地址长度有关系,不同的浏览器有所不同,一般最多几k; | 理论上能携带的数据是无限的,但实际受配置和性能的影响; |
| 缓存 | 可以被缓存; | 一般不会被缓存; |
| 安全性 | 相对不安全,传递的数据在浏览器地址栏直接可见,不适合传递敏感数据; | 相对安全,更适合传递敏感信息; |

对服务器的影响 通常只是用来获取资源,不会对服务器上的资源产生影响; 通常是用来创建资源,对服务器上的资源会产生;

五、HTTP 状态码(常用)

1、HTTP 状态码是什么

HTTP状态码是HTTP协议中,用来描述服务器响应客户端请求结果的一种编码方式;

  • 是服务器端返回的,对客户端请求的处理结果;
  • 它由三位数字组成,每个数字表示不同的含义;
  • 定义服务器对请求的处理结果,是服务器返回的;

2、常见的HTTP状态码

熟悉常用的状态码对前后端开发有很大的帮助;

不仅可以快速识别请求是否成功;

也可以得出在请求过程中出现的错误类型,进而相应的相应的处理;

HTTP状态码 英文名称 语义
1xx 信息,服务器收到请求,需要请求者继续执行操作
100 Continue 继续。客户端应继续其请求;
101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议;
2xx 成功,操作被成功接收并处理
200 OK 请求成功。请求所希望的响应头或数据体将随此响应返回;
201 Created 已创建。成功请求并创建了新的资源;
202 Accepted 已接受。已经接受请求,但未处理完成;
204 No Content 无内容。服务器成功处理,但未返回内容;
206 Partial Content 部分内容。服务器成功处理了部分GET请求;
3xx 重定向,需要进一步的操作以完成请求
301 Moved Permanently 永久移动。请求的资源已被永久移动到新位置;
302 Found 临时移动。与301类似,客户端应继续使用原先的URL请求资源;
304 Not Modified 未修改。自上次请求后,请求的资源未被修改过;
305 Use Proxy 使用代理。所请求的资源必须通过代理访问;
307 Temporary Redirect 临时重定向。与302类似。使用GET请求重定向;
4xx 客户端错误,请求包含语法错误或无法完成请求
400 Bad Request 客户端请求的语法错误,服务器无法理解;
401 Unauthorized 请求要求用户的身份认证;
403 Forbidden 服务器理解请求,但拒绝执行它;
404 Not Found 服务器无法找到请求的资源;
405 Method Not Allowed 请求方法不被允许用于请求的资源;
409 Conflict 请求与当前资源的状态冲突;
410 Gone 服务器无法找到请求的资源,且该资源可能不再可用;
5xx 服务器错误,服务器在处理请求的过程中发生了错误
500 Internal Serve Error 服务器内部错误,无法完成请求;
501 Not Implemented 服务器不支持请求请求的功能;
502 Bad Gateway 服务器作为网关或代理,从上游服务器收到无效响应;
503 Service Unavailable 服务器当前无法使用(由于超载或停机维护);
504 Gateway Timeout 服务器作为网关或代理,但没有及时从上游服务器收到请求;

=========================================================================

每天进步一点点~~!

先记录到这里吧~~!

相关推荐
J老熊2 小时前
Linux下抓包分析Java应用程序HTTP接口调用:基于tcpdump与Wireshark的综合示例
java·linux·运维·web安全·http·面试
knight-n5 小时前
详解HTTP/HTTPS协议
网络·网络协议·http·https
alsknv18 小时前
只有IP地址没有域名怎么实现HTTPS访问?
网络·网络协议·tcp/ip·http·https·ssl
soladuor19 小时前
xray 与 nginx 多网站共存(443端口复用方案)
nginx·https·ssl
DieSnowK20 小时前
[项目][WebServer][Task]详细讲解
linux·开发语言·c++·http·项目·task·webserver
MonkeyKing_sunyuhua1 天前
修改 HTTP 和 HTTPS 代理设置为 `http://127.0.0.1:8118
http·https
佐杰1 天前
charls基于夜神模拟器抓取安卓7.0应用程序https请求
android·网络协议·https
daqinzl1 天前
C#使用HttpWebRequest下载文件
http·httpwebrequest·c# 文件下载
SCBAiotAigc1 天前
golang实现正向代理http_proxy和https_proxy
http·golang·https
不良人天码星1 天前
HTTPS的加密流程
网络协议·http·https