HTTP请求报文头和相应报文头
一、HTTP请求报文头
HTTP请求报文由请求行、请求头和请求体组成。请求头包含客户端向服务器发送的附加信息。
1.1 请求行
- 格式: 方法 请求URI HTTP/版本
- 示例: GET /index.html HTTP/1.1
方法: 请求类型,如GET、POST、PUT、DELETE等。
请求URI: 请求的资源路径。
HTTP/版本: 使用的HTTP协议版本。
1.2 请求头字段
-
Host: 服务器域名和端口号。
示例: Host: www.example.com -
User-Agent: 客户端信息(浏览器、操作系统等)。
示例: User-Agent: Mozilla/5.0 -
Accept: 客户端可接受的MIME类型。
示例: Accept: text/html,application/xhtml+xml -
Accept-Language: 客户端可接受的语言。
示例: Accept-Language: en-US,en;q=0.5 -
Accept-Encoding: 客户端可接受的编码方式。
示例: Accept-Encoding: gzip, deflate -
Connection: 控制连接状态。
示例: Connection: keep-alive -
Referer: 请求来源页面的URI。
示例: Referer: https://www.example.com/previous-page -
Authorization: 认证信息。
示例: Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== -
Cookie: 客户端发送的Cookie。
示例: Cookie: name=value; name2=value2
二、HTTP响应报文头
HTTP响应报文由状态行、响应头和响应体组成。响应头包含服务器返回的附加信息。
2.1 状态行
- 格式: HTTP/版本 状态码 状态短语
- 示例: HTTP/1.1 200 OK
HTTP/版本: 使用的HTTP协议版本。
状态码: 表示请求结果的三位数字。
状态短语: 状态码的文本描述。
2.2 响应头字段
-
Server: 服务器软件信息。
示例: Server: Apache/2.4.1 -
Date: 响应生成的时间。
示例: Date: Mon, 23 May 2022 22:38:34 GMT -
Content-Type: 响应体的MIME类型。
示例: Content-Type: text/html; charset=UTF-8 -
Content-Length: 响应体的字节数。
示例: Content-Length: 1234 -
Content-Encoding: 响应体的编码方式。
示例: Content-Encoding: gzip -
Set-Cookie: 服务器设置的Cookie。
示例: Set-Cookie: name=value; Path=/ -
Cache-Control: 缓存控制指令。
示例: Cache-Control: no-cache -
Location: 重定向目标URI。
示例: Location: https://www.example.com/new-location -
WWW-Authenticate: 认证方式。
示例: WWW-Authenticate: Basic realm=“Access to the staging site”
三、常见状态码
| 状态码 | 英文 | 描述详解 |
|---|---|---|
| 200 | OK: | 请求成功。 |
| 301 | Moved Permanently: | 资源永久重定向。 |
| 400 | Bad Request: | 请求无效。 |
| 401 | Unauthorized: | 请求未认证。 |
| 403 | Forbidden: | 请求被拒绝。 |
| 404 | Not Found: | 资源未找到。 |
| 500 | Internal Server Error: | 服务器内部错误。 |
四、GET 和 POST 对比
GET 和 POST是 HTTP 协议中最常用的两种请求方法,它们在用途、数据传输方式、安全性等方面有显著区别。以下是 GET 和 POST 的主要区别:
1、 用途
GET:
- 用于从服务器获取资源。
- 通常用于请求数据,例如加载网页、查询信息等。
- 是幂等的(多次请求不会对资源产生副作用)。
POST:
- 用于向服务器提交数据。
- 通常用于提交表单、上传文件、修改数据等。
- 是非幂等的(多次请求可能会对资源产生副作用)。
2、数据传输方式
GET:
- 数据通过 URL 的查询字符串(Query String)传递。
- 示例:https://example.com/search?q=hello&page=1
- 数据附加在 URL 后面,以 ? 开头,参数之间用 & 分隔。
- 数据可见,会显示在浏览器地址栏中。
POST:
- 数据通过请求体(Request Body)传递。
- 示例:表单数据或 JSON 数据。
- 数据不可见,不会显示在浏览器地址栏中。
3、数据长度限制
GET:
- 受 URL 长度限制(通常为 2048 个字符,具体取决于浏览器和服务器)。
- 不适合传输大量数据。
POST:
- 没有长度限制,适合传输大量数据(如文件上传)。
4、安全性
GET:
- 数据暴露在 URL 中,容易被缓存、记录在浏览器历史或服务器日志中。
- 不适合传输敏感信息(如密码)。
POST:
- 数据在请求体中传输,相对更安全。
- 但仍需结合 HTTPS 来确保数据加密传输。
5、缓存
GET:
- 请求可以被缓存,浏览器可能会存储 GET 请求的结果。
- 适合请求静态资源(如图片、CSS 文件)。
POST:
- 请求默认不会被缓存。
- 适合提交动态数据。
6、幂等性
GET:
- 是幂等的,多次请求不会对资源产生影响。
- 例如:多次请求同一个 URL,返回的结果相同。
POST:
- 不是幂等的,多次请求可能会对资源产生不同影响。
- 例如:多次提交表单可能会导致重复创建资源。
7、 浏览器行为
GET:
- 可以直接通过浏览器地址栏发起请求。
- 支持书签保存。
POST:
- 需要通过表单或 JavaScript 发起请求。
- 不支持直接通过地址栏发起。
8、适用场景
GET:
- 获取数据(如搜索、分页)。
- 请求静态资源(如图片、CSS、JS 文件)。
POST:
- 提交数据(如登录、注册、文件上传)。
- 修改数据(如创建、更新、删除资源)。
9、示例对比
GET 请求
GET /search?q=hello&page=1 HTTP/1.1
Host: example.com
数据通过 URL 传递。
POST 请求
POST /submit-form HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27username=john&password=123
数据通过请求体传递。
10、总结对比表
| 特性 | GET | POST |
|---|---|---|
| 用途 | 获取资源 | 提交数据 |
| 数据传输方式 | URL 查询字符串 | 请求体 |
| 数据长度 | 有限制(URL 长度) | 无限制 |
| 安全性 | 较低(数据暴露在 URL 中) | 较高(数据在请求体中) |
| 缓存 | 可缓存 | 不可缓存 |
| 幂等性 | 幂等 | 非幂等 |
| 浏览器行为 | 可通过地址栏发起 | 需通过表单或 JS 发起 |
| 适用场景 | 获取数据、请求静态资源 | 提交数据、修改数据 |
11、选择 GET 还是 POST?
- 如果需要从服务器获取数据,且数据量较小,使用 GET。
- 如果需要向服务器提交数据,尤其是敏感信息或大量数据,使用 POST。
相关文章:
HTTP请求报文头和相应报文头
一、HTTP请求报文头 HTTP请求报文由请求行、请求头和请求体组成。请求头包含客户端向服务器发送的附加信息。 1.1 请求行 格式: 方法 请求URI HTTP/版本示例: GET /index.html HTTP/1.1 方法: 请求类型,如GET、POST、PUT、DELETE等。 请求URI: 请求的资源…...
19.4.9 数据库方式操作Excel
版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本节所说的操作Excel操作是讲如何把Excel作为数据库来操作。 通过COM来操作Excel操作,请参看第21.2节 在第19.3.4节【…...
BFS 走迷宫
#include<bits/stdc.h> using namespace std; int a[100][100],v[100][100];//访问数组 n,m<100 struct point {int x;int y;int step; }; queue<point> r;//申请队列 int dx[4]{0,1,0,-1};//四个方向 右下左上 int dy[4]{1,0,-1,0}; int main() { /* 5 4 1 …...
【Linux系统】—— 简易进度条的实现
【Linux系统】—— 简易进度条的实现 1 回车和换行2 缓冲区3 进度条的准备代码4 第一版进度条5 第二版进度条 1 回车和换行 先问大家一个问题:回车换行是什么,或者说回车和换行是同一个概念吗? 可能大家对回车换行有一定的误解࿰…...
Qt 中使用 SQLite 数据库的完整指南
SQLite 是一款轻量级、嵌入式的关系型数据库,无需独立的服务器进程,数据以文件形式存储,非常适合桌面和移动端应用的本地数据管理。Qt 通过 Qt SQL 模块提供了对 SQLite 的原生支持,开发者可以轻松实现数据库的增删改查、事务处理…...
数智化时代的工单管理:从流程驱动到数据驱动-亿发
在数智化时代,工单管理系统已从简单的任务分发工具演变为企业运营的智能中枢。传统工单系统关注流程的线性推进,而现代工单管理系统则强调数据的全生命周期管理,通过智能算法实现工单的自动分配、优先级判定和效能优化。这种转变不仅提升了运…...
Large Language Model Distilling Medication Recommendation Model
摘要:药物推荐是智能医疗系统的一个重要方面,因为它涉及根据患者的特定健康需求开具最合适的药物。不幸的是,目前使用的许多复杂模型往往忽视医疗数据的细微语义,而仅仅严重依赖于标识信息。此外,这些模型在处理首次就…...
floodfill算法系列一>被围绕的区域
目录 整体思想:代码设计:代码呈现: 整体思想: 代码设计: 代码呈现: class Solution {int m,n;int[] dx {0,0,-1,1};int[] dy {-1,1,0,0};public void solve(char[][] board) {m board.length;n board[…...
Redis 01 02章——入门概述与安装配置
一、入门概述 (1)是什么 Redis:REmote Dictionary Server(远程字典服务器)官网解释:Remote Dictionary Server(远程字典服务)是完全开源的,使用ANSIC语言编写遵守BSD协议,是一个高…...
windows基于cpu安装pytorch运行faster-whisper-large-v3实现语音转文字
1.创建虚拟环境 conda create -n faster-whisper python3.10 conda activate faster-whisper 2.安装cpu版本的pytorch pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple 3.验证pytorch安装结果 (faster-whisper) H:\big-model\faste…...
AI大模型(如GPT、BERT等)可以通过自然语言处理(NLP)和机器学习技术,显著提升测试效率
在软件测试中,AI大模型(如GPT、BERT等)可以通过自然语言处理(NLP)和机器学习技术,显著提升测试效率。以下是几个具体的应用场景及对应的代码实现示例: 1. 自动生成测试用例 AI大模型可以根据需求文档或用户故事自动生成测试用例。 代码示例(使用 OpenAI GPT API): …...
【Prometheus】prometheus黑盒监控balckbox全面解析与应用实战
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…...
CSS实现单行、多行文本溢出显示省略号(…)
在网页设计中,我们常常遇到这样的情况:文本内容太长,无法完全显示在一个固定的区域内。为了让界面看起来更整洁,我们可以使用省略号(…)来表示内容溢出。这不仅能提升用户体验,还能避免内容溢出…...
服务器中部署大模型DeepSeek-R1 | 本地部署DeepSeek-R1大模型 | deepseek-r1部署详细教程
0. 部署前的准备 首先我们需要足够算力的机器,这里我在vultr中租了有一张A16显卡一共16GB显存的服务器作为演示。部署的模型参数为14b的。如果需要部署满血版本671b的,需要更大的算力支持,这里由于是个人资金有限,就演示14b的部署…...
元学习之孪生网络Siamese Network
简介:元学习是一种思想,一般以神经网络作为特征嵌入的工具,实现对数据特征的提取,然后通过构造某种指标以引导优化器对模型参数进行优化。而最小化距离是最常见的学习目标,这就是熟知的度量学习,度量学习里…...
深入HBase——引入
引入 前面我们通过深入HDFS到深入MapReduce ,从设计和落地,去深入了解了大数据最底层的基石——存储与计算是如何实现的。 这个专栏则开始来看大数据的三驾马车中最后一个。 通过前面我们对于GFS和MapReduce论文实现的了解,我们知道GFS在数…...
Python创建FastApi项目模板
1. 项目结构规范 myproject/ ├── app/ │ ├── core/ # 核心配置 │ │ ├── config.py # 环境配置 │ │ └── security.py # 安全配置 │ ├── routers/ # 路由模块 │ │ └── users.py # 用户路由 │ ├…...
TCNE 网络安全
一.概况 CTF(Capture The Flag)在网络安全领域中指的是网络技术人员之间进行技术竞技的一种比赛形式,它起源于1996年的DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式,现已成为全球范围网…...
车规MCU处理器选择Cortex-M7还是Cortex-R52?
车规mcu处理器选择Cortex-M7还是Cortex-R52?跟随小编从具体应用场景、安全等级(ASIL)、性能、成本进行分析吧。 01安全等级需求 ASIL-D(如刹车、转向)→ 必选R52。R52原生支持ASIL-D,硬件级错误检测&#…...
什么是计算机中的 “终端”?
在我们初学编程的时候,会遇到一个很重要的概念 ——终端。那它到底是什么呢? 在计算机领域,终端就像是我们和计算机进行对话的 “窗口”。我们可以在这个窗口里,用一些特定的命令来告诉计算机该做什么。比如,让计算机…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
