当前位置: 首页 > 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;让计算机…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销&#xff0c;平衡网络负载&#xff0c;延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...