当前位置: 首页 > news >正文

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”

三、常见状态码

状态码英文描述详解
200OK:请求成功。
301Moved Permanently:资源永久重定向。
400Bad Request:请求无效。
401Unauthorized:请求未认证。
403Forbidden:请求被拒绝。
404Not Found:资源未找到。
500Internal 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、总结对比表

特性GETPOST
用途获取资源提交数据
数据传输方式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 回车和换行 先问大家一个问题&#xff1a;回车换行是什么&#xff0c;或者说回车和换行是同一个概念吗&#xff1f;   可能大家对回车换行有一定的误解&#xff0…...

Qt 中使用 SQLite 数据库的完整指南

SQLite 是一款轻量级、嵌入式的关系型数据库&#xff0c;无需独立的服务器进程&#xff0c;数据以文件形式存储&#xff0c;非常适合桌面和移动端应用的本地数据管理。Qt 通过 Qt SQL 模块提供了对 SQLite 的原生支持&#xff0c;开发者可以轻松实现数据库的增删改查、事务处理…...

数智化时代的工单管理:从流程驱动到数据驱动-亿发

在数智化时代&#xff0c;工单管理系统已从简单的任务分发工具演变为企业运营的智能中枢。传统工单系统关注流程的线性推进&#xff0c;而现代工单管理系统则强调数据的全生命周期管理&#xff0c;通过智能算法实现工单的自动分配、优先级判定和效能优化。这种转变不仅提升了运…...

Large Language Model Distilling Medication Recommendation Model

摘要&#xff1a;药物推荐是智能医疗系统的一个重要方面&#xff0c;因为它涉及根据患者的特定健康需求开具最合适的药物。不幸的是&#xff0c;目前使用的许多复杂模型往往忽视医疗数据的细微语义&#xff0c;而仅仅严重依赖于标识信息。此外&#xff0c;这些模型在处理首次就…...

floodfill算法系列一>被围绕的区域

目录 整体思想&#xff1a;代码设计&#xff1a;代码呈现&#xff1a; 整体思想&#xff1a; 代码设计&#xff1a; 代码呈现&#xff1a; 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章——入门概述与安装配置

一、入门概述 &#xff08;1&#xff09;是什么 Redis&#xff1a;REmote Dictionary Server&#xff08;远程字典服务器&#xff09;官网解释&#xff1a;Remote Dictionary Server(远程字典服务)是完全开源的&#xff0c;使用ANSIC语言编写遵守BSD协议&#xff0c;是一个高…...

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实现单行、多行文本溢出显示省略号(…)

在网页设计中&#xff0c;我们常常遇到这样的情况&#xff1a;文本内容太长&#xff0c;无法完全显示在一个固定的区域内。为了让界面看起来更整洁&#xff0c;我们可以使用省略号&#xff08;…&#xff09;来表示内容溢出。这不仅能提升用户体验&#xff0c;还能避免内容溢出…...

服务器中部署大模型DeepSeek-R1 | 本地部署DeepSeek-R1大模型 | deepseek-r1部署详细教程

0. 部署前的准备 首先我们需要足够算力的机器&#xff0c;这里我在vultr中租了有一张A16显卡一共16GB显存的服务器作为演示。部署的模型参数为14b的。如果需要部署满血版本671b的&#xff0c;需要更大的算力支持&#xff0c;这里由于是个人资金有限&#xff0c;就演示14b的部署…...

元学习之孪生网络Siamese Network

简介&#xff1a;元学习是一种思想&#xff0c;一般以神经网络作为特征嵌入的工具&#xff0c;实现对数据特征的提取&#xff0c;然后通过构造某种指标以引导优化器对模型参数进行优化。而最小化距离是最常见的学习目标&#xff0c;这就是熟知的度量学习&#xff0c;度量学习里…...

深入HBase——引入

引入 前面我们通过深入HDFS到深入MapReduce &#xff0c;从设计和落地&#xff0c;去深入了解了大数据最底层的基石——存储与计算是如何实现的。 这个专栏则开始来看大数据的三驾马车中最后一个。 通过前面我们对于GFS和MapReduce论文实现的了解&#xff0c;我们知道GFS在数…...

Python创建FastApi项目模板

1. 项目结构规范 myproject/ ├── app/ │ ├── core/ # 核心配置 │ │ ├── config.py # 环境配置 │ │ └── security.py # 安全配置 │ ├── routers/ # 路由模块 │ │ └── users.py # 用户路由 │ ├…...

TCNE 网络安全

一.概况 CTF&#xff08;Capture The Flag&#xff09;在网络安全领域中指的是网络技术人员之间进行技术竞技的一种比赛形式&#xff0c;它起源于1996年的DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式&#xff0c;现已成为全球范围网…...

车规MCU处理器选择Cortex-M7还是Cortex-R52?

车规mcu处理器选择Cortex-M7还是Cortex-R52&#xff1f;跟随小编从具体应用场景、安全等级&#xff08;ASIL&#xff09;、性能、成本进行分析吧。 01安全等级需求 ASIL-D&#xff08;如刹车、转向&#xff09;→ 必选R52。R52原生支持ASIL-D&#xff0c;硬件级错误检测&#…...

什么是计算机中的 “终端”?

在我们初学编程的时候&#xff0c;会遇到一个很重要的概念 ——终端。那它到底是什么呢&#xff1f; 在计算机领域&#xff0c;终端就像是我们和计算机进行对话的 “窗口”。我们可以在这个窗口里&#xff0c;用一些特定的命令来告诉计算机该做什么。比如&#xff0c;让计算机…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

路由基础-路由表

本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中&#xff0c;往往存在多个不同的IP网段&#xff0c;数据在不同的IP网段之间交互是需要借助三层设备的&#xff0c;这些设备具备路由能力&#xff0c;能够实现数据的跨网段转发。 路由是数据通信网络中最基…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001

qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类&#xff0c;直接把源文件拖进VS的项目里&#xff0c;然后VS卡住十秒&#xff0c;然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分&#xff0c;导致编译的时候找不到了。因…...

欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!

多连接 BLE 怎么设计服务不会乱&#xff1f;分层思维来救场&#xff01; 作者按&#xff1a; 你是不是也遇到过 BLE 多连接时&#xff0c;调试现场像网吧“掉线风暴”&#xff1f; 温度传感器连上了&#xff0c;心率带丢了&#xff1b;一边 OTA 更新&#xff0c;一边通知卡壳。…...