HTTP/HTTPS协议(请求响应模型、状态码)

目录

HTTP/HTTPS协议简介

HTTP协议

HTTPS协议

请求 - 响应模型

HTTP请求

(二)HTTP响应

HTTPS协议与HTTP协议在请求 - 响应模型中的区别


HTTP/HTTPS协议简介

HTTP协议

定义

HTTP(HyperText Transfer Protocol)即超文本传输协议,是互联网上应用最为广泛的协议之一。它是一种无状态的、面向事务的协议,用于客户端(如浏览器)和服务器之间的通信。无状态意味着每次请求 - 响应对都是独立的,服务器不会保存之前请求的状态信息。

工作原理

客户端(如浏览器)通过发送HTTP请求到服务器来获取资源,服务器收到请求后进行处理,并返回相应的HTTP响应。这个过程是基于TCP/IP协议的,通常使用80端口。

HTTPS协议

定义

HTTPS(HyperText Transfer Protocol Secure)是HTTP协议的安全版本。它通过在HTTP的基础上加入SSL/TLS(Secure Sockets Layer/Transport Layer Security)协议来实现数据的加密传输。SSL/TLS协议提供了数据加密、数据完整性和身份验证等功能。

工作原理

在HTTPS通信过程中,客户端和服务器之间首先会进行SSL/TLS握手。握手过程中,服务器会向客户端发送自己的数字证书,客户端会验证证书的有效性(包括证书是否由受信任的证书颁发机构签发、证书是否在有效期内等)。如果证书验证通过,客户端和服务器会协商加密算法和密钥,然后使用这些密钥对后续的HTTP请求和响应进行加密传输。HTTPS通常使用443端口。

请求 - 响应模型

HTTP请求

请求行

包括请求方法、请求URI(Uniform Resource Identifier,统一资源标识符)和HTTP协议版本。例如,“GET /index.html HTTP/1.1”。

请求方法

  • GET:用于请求服务器返回指定资源的内容,是最常用的HTTP方法之一。例如,浏览器访问一个网页时通常会使用GET方法。
  • POST:用于向服务器提交数据,请求服务器处理这些数据。例如,提交表单数据时通常会使用POST方法。POST方法提交的数据不会显示在URL中,相对GET方法更安全。
  • PUT:用于向服务器上传一个资源,通常用于更新或创建资源。
  • DELETE:用于请求服务器删除指定的资源。
  • HEAD:与GET方法类似,但服务器只返回响应头,不返回响应体。这在检查资源是否存在或获取资源的元数据时很有用。
  • OPTIONS:用于获取服务器支持的HTTP方法列表。
  • CONNECT:用于建立一个到服务器的隧道,常用于代理服务器。
  • PATCH:用于对资源进行部分修改。

请求头

包含一些额外的信息,用于描述请求的细节。例如:

Host:指定请求的主机名和端口号。

  • User - Agent:描述客户端的软件环境,如浏览器类型、操作系统等。服务器可以根据这个信息来优化响应内容。
  • Accept:告诉服务器客户端可以接受的响应内容类型,如“Accept: text/html”表示客户端希望接收HTML格式的内容。
  • Content - Length:表示请求体的长度,单位是字节。对于POST或PUT请求,如果请求体中有数据,这个字段是很有用的。
  • Authorization:用于身份验证,如在请求头中包含用户名和密码的Base64编码。

请求体

  • 对于POST、PUT等方法,请求体可以包含要提交到服务器的数据,如表单数据、JSON格式的数据等。例如,提交一个用户注册表单时,请求体可能包含用户名、密码等信息。

(二)HTTP响应

状态行

包括HTTP协议版本、状态码和原因短语。例如,“HTTP/1.1 200 OK”。

状态码

1xx(信息性状态码):表示请求已被接收,继续处理。如100 Continue,表示客户端可以继续发送请求体。

2xx(成功状态码):表示请求已成功被服务器接收、理解、并接受。

  • 200 OK:请求成功,服务器返回了请求的资源。
  • 201 Created:请求成功,并且服务器创建了新的资源。
  • 204 No Content:请求成功,但响应体为空。

3xx(重定向状态码):表示需要后续操作才能完成请求。

  • 301 Moved Permanently:永久重定向,表示请求的资源已被永久移动到新的URL。
  • 302 Found:临时重定向,表示请求的资源暂时被移动到新的URL。
  • 304 Not Modified:表示请求的资源未被修改,客户端可以使用本地缓存的版本。

4xx(客户端错误状态码):表示客户端可能发生了错误,妨碍了服务器的处理。

  • 400 Bad Request:请求语法有误,服务器无法理解。
  • 401 Unauthorized:请求未授权,需要身份验证。
  • 403 Forbidden:服务器理解请求但拒绝执行。
  • 404 Not Found:请求的资源在服务器上未找到。

5xx(服务器错误状态码):表示服务器在处理请求的过程中发生了错误。

  • 500 Internal Server Error:服务器内部错误,无法完成请求。
  • 502 Bad Gateway:服务器作为网关或代理时,从上游服务器收到无效响应。
  • 503 Service Unavailable:服务器当前不可用,暂时无法处理请求。

响应头

包含一些额外的信息,用于描述响应的细节。例如:

  • Content - Type:表示响应体的MIME类型,如“Content - Type: text/html”表示响应体是HTML格式。
  • Content - Length:表示响应体的长度,单位是字节。
  • Location:在3xx重定向响应中,该字段表示新的资源位置。
  • Set - Cookie:用于设置客户端的Cookie。

响应体

包含服务器返回的资源内容,如HTML页面、图片、JSON数据等。对于200 OK响应,响应体就是请求的资源内容;对于404 Not Found响应,响应体可能是一个错误页面。

HTTPS协议与HTTP协议在请求 - 响应模型中的区别

在HTTPS协议中,整个请求 - 响应过程是加密的。请求行、请求头、请求体、状态行、响应头和响应体都被加密传输,防止数据在传输过程中被窃听或篡改。而HTTP协议的这些内容都是以明文形式传输,安全性较低。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/80006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony 5.0 切换已连接过的wifi切换失败

目录 1.背景 2.流程分析 3.方案 1.背景 在OpenHarmony 5.0的设置中,输入密码进行wifi连接可以正常连接,然后多个已经连接过的wifi进行切换发现大概率切换失败 2.流程分析 wifi连接过程其实是先进行断开当前的wifi连接,然后再连接另一个wifi,如下: 虽然上述流程看起来没…

【Ollama】docker离线部署Ollama+deepseek

因为要做项目,实验室的服务器不联网,所以只能先打包一个基础的docker环境,然后再在实验室的服务器上进行解压和配置环境 参考:https://zhuanlan.zhihu.com/p/23377266873 1.打包基础的docker环境 这里最好用有cuda的&#xff0c…

如何使用极狐GitLab 软件包仓库功能托管 terraform?

极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 Terraform 模块库 (BASIC ALL) 基础设施仓库和 Terraform 模块仓库合并到单个 Terraform 模块仓库功能引入于极狐GitLab 15.1…

【QT】深入理解 Qt 中的对象树:机制、用途与最佳实践

深入理解 Qt 中的对象树:机制、用途与最佳实践 在使用 Qt 编程时,你是否注意到很多对象可以设置“父对象”?比如: QPushButton* btn new QPushButton(parentWidget);这不是简单的层级结构,而是 Qt 强大而优雅的 对象…

比较入站和出站防火墙规则

组织需要仔细配置防火墙规则,监控网络的传入和传出流量,从而最大限度降低遭受攻击的风险。在有效管理入站和出站防火墙规则前,了解入站与出站流量的区别至关重要。 一、什么是入站流量? 入站流量指的是并非源自网络内部&#xf…

Unity-Shader详解-其五

关于Unity的Shader部分的基础知识其实已经讲解得差不多了,今天我们来一些实例分享: 溶解 效果如下: 代码如下: Shader "Chapter8/chapter8_1" {Properties{// 定义属性[NoScaleOffset]_Albedo("Albedo", 2…

COLT_CMDB_linux_userInfo_20250508.sh修复历史脚本输出指标信息中userName与输出信息不一致问题

#!/bin/bash #IT_BEGIN #IT_TYPE3 #IT SYSTEM_LINUX_AGENTUSERDISCOVER|discovery.user[disc] #原型指标 #IT_RULE SYSTEM_LINUX_AGENTUSERGROUPID|groupId[{#USERNAME}] #IT_RULE SYSTEM_LINUX_AGENTUSERHOME|userHome[{#USERNAME}] #IT_RULE SYSTEM_LINUX_AGENTUSERNAME|user…

TCP 与 UDP报文

** TCP 与 UDP报文** 1. 引言 在网络通信中,TCP(传输控制协议) 和 UDP(用户数据报协议) 是两种最核心的传输层协议。它们各自适用于不同的场景,理解其工作原理对开发高性能网络应用至关重要。本文将详细解…

LabVIEW燃气轮机测控系统

在能源需求不断增长以及生态环境保护备受重视的背景下,微型燃气轮机凭借其在经济性、可靠性、维护性及排放性等方面的显著优势,在航空航天、分布式发电等众多领域得到广泛应用。随着计算机技术的快速发展,虚拟仪器应运而生,LabVIE…

基于vueflow可拖拽元素的示例(基于官网示例的单文件示例)

效果图 代码 <template><div style"width: 100%;height: calc(100vh - 84px)"><VueFlow :nodes"nodes" :edges"edges" drop"onDrop" dragover"onDragOver" dragleave"onDragLeave"><div cl…

笔试专题(十六)

文章目录 相差不超过k的最多数题解代码 最长公共子序列&#xff08;一&#xff09;题解代码 小红的口罩题解代码 春游题解代码 相差不超过k的最多数 题目链接 题解 1. 排序 滑动窗口 2. 为什么使用滑动窗口&#xff1f; 因为max-min < k&#xff0c;求这个区间内的数最…

技术视界 | 青龙机器人训练地形详解(三):复杂地形精讲之台阶

在前两篇中&#xff0c;我们依次讲解了“如何创建一个地形”以及“如何将地形添加到训练环境中”。从基础出发&#xff0c;逐步构建机器人可交互的三维仿真环境。在机器人强化学习训练中&#xff0c;地形的复杂度决定了策略的泛化能力&#xff0c;仅靠 jump_plat 和 jump_pit 等…

MYSQL之索引结构,为何要用B+树

索引的目的就是为了提高查询效率 索引的结构是B树&#xff0c;那么说到B树&#xff0c;必须提一下其他三种结构&#xff0c;分别是&#xff1a;二叉查找树、平衡二叉树、B树 我们来看看各自的结构特征 二叉查找树 特点:任何节点的左子节点的值都小于当前节点的值&#xff0c;右…

3.2.3 掌握RDD转换算子 - 2. 过滤算子 - filter()

在本节课中&#xff0c;我们深入学习了Spark RDD的过滤算子filter()。filter()算子能够通过指定的函数对RDD中的元素进行筛选&#xff0c;返回一个满足条件的新RDD&#xff0c;通常新RDD的元素个数会比源RDD少。通过案例演示&#xff0c;我们掌握了如何使用filter()来过滤列表中…

vue3使用轮播图组件swiper

一、在swiper的官网源码下载地址 下载Swiper - Swiper中文网 二、官网浏览轮播图类型地址 Swiper演示 - Swiper中文网 三、swiper配置参数地址 中文api - Swiper中文网 四、在vue3项目引入swiper npm install swiper 五、在vue3中使用 官网vue3中使用&#xff1a;Swiper…

MySQL优化-MySQL故障排查与监控

MySQL优化-MySQL故障排查与监控 一、MySQL监控 实时了解数据库的运行状态&#xff0c;通过不同的监控指标&#xff0c;识别潜在问题并进行预防。常见得到MySQL监控指标包括&#xff1a;连接数、缓存池命中率、磁盘I/O、查询执行情况等。 1、监控数据库状态变量 MySQL的状态…

【MongoDB篇】MongoDB的分片操作!

目录 引言第一节&#xff1a;分片核心概念&#xff1a;为什么要分片&#xff1f;它是什么&#xff1f; &#x1f914;&#x1f4a5;&#x1f680;第二节&#xff1a;分片架构的“三大金刚”&#xff1a;核心组件解析 &#x1f9f1;&#x1f9e0;&#x1f6e3;️第三节&#xff…

C++ 函数类型及实用例题

请各位大佬一键三连支持一下 目录 请各位大佬一键三连支持一下 1. 无参数无返回值函数 2. 有参数无返回值函数 3. 无参数有返回值函数 4. 有参数有返回值函数 5. 函数重载 6. 递归函数 7. 带默认参数的函数 8. 内联函数 下面我将介绍 C 中不同类型的函数&#xff0c;…

AtCoder Beginner Contest 404 A-E 题解

还是ABC好打~比ARC好打多了&#xff08; 题解部分 A - Not Found 给定你一个长度最大25的字符串&#xff0c;任意输出一个未出现过的小写字母 签到题&#xff0c;map或者数组下标查询一下就好 #include<bits/stdc.h>using namespace std;#define int long long #def…

trae ai编程工具

Trae&#xff0c;致力于成为真正的 AI 工程师&#xff08;The Real Al Engineer&#xff09;。Trae 旗下的 AI IDE 产品&#xff0c;以智能生产力为核心&#xff0c;无缝融入你的开发流程&#xff0c;与你默契配合&#xff0c;更高质量、高效率完成每一个任务。 版本差异 国内…