18天 - 常见的 HTTP 状态码有哪些?HTTP 请求包含哪些内容,请求头和请求体有哪些类型?HTTP 中 GET 和 POST 的区别是什么?

常见的 HTTP 状态码有哪些?

HTTP 状态码用于指示服务器对客户端请求的响应结果,常见的 HTTP 状态码可以分为以下几类:

1. 信息类(1xx)

  • 100 Continue:客户端应继续发送请求。
  • 101 Switching Protocols:服务器根据客户端的请求切换协议。

2. 成功类(2xx)

  • 200 OK:请求成功,响应体包含所请求的资源。
  • 201 Created:请求成功并且服务器创建了新的资源。
  • 202 Accepted:服务器已接受请求,但尚未处理完成。
  • 204 No Content:服务器成功处理请求,但响应体为空。

3. 重定向类(3xx)

  • 301 Moved Permanently:请求的资源已永久移动到新位置。
  • 302 Found:请求的资源临时移动到新位置。
  • 304 Not Modified:资源未修改,客户端可以使用缓存的版本。

4. 客户端错误类(4xx)

  • 400 Bad Request:请求语法错误或请求参数无效。
  • 401 Unauthorized:请求未授权,需要身份验证。
  • 403 Forbidden:服务器拒绝请求,客户端无权限访问。
  • 404 Not Found:请求的资源不存在。
  • 405 Method Not Allowed:请求方法不被允许。

5. 服务器错误类(5xx)

  • 500 Internal Server Error:服务器遇到意外情况,无法完成请求。
  • 501 Not Implemented:服务器不支持请求的功能。
  • 502 Bad Gateway:服务器作为网关或代理时,从上游服务器收到无效响应。
  • 503 Service Unavailable:服务器暂时无法处理请求,通常由于过载或维护。
  • 504 Gateway Timeout:服务器作为网关或代理时,未从上游服务器及时收到响应。

HTTP 请求包含哪些内容,请求头和请求体有哪些类型?

HTTP 请求主要由以下几个部分组成:

1. 请求行(Request Line)

请求行包含请求方法、请求的资源路径以及 HTTP 协议版本。例如:

GET /index.html HTTP/1.1

2. 请求头(Headers)

请求头包含客户端发送给服务器的额外信息,例如客户端的类型、接受的内容类型、认证信息等。常见的请求头类型包括:

  • 通用头(General Headers):适用于请求和响应,例如 Cache-ControlConnectionDatePragma
  • 请求头(Request Headers):仅适用于请求,例如 AcceptAccept-CharsetAccept-EncodingAccept-LanguageAuthorizationCookieHostUser-Agent
  • 响应头(Response Headers):仅适用于响应,例如 AgeLocationServerSet-Cookie
  • 实体头(Entity Headers):适用于请求和响应中的实体部分,例如 AllowContent-EncodingContent-LanguageContent-LengthContent-LocationContent-MD5Content-RangeContent-TypeExpiresLast-Modified

3. 请求体(Body)

请求体是请求中发送的实体内容,通常用于 POST、PUT 等方法。请求体的类型可以是多种格式,常见的包括:

  • 表单数据(application/x-www-form-urlencoded):键值对形式的表单数据,例如 key1=value1&key2=value2
  • 多部分表单数据(multipart/form-data):用于上传文件等复杂数据,常用于文件上传表单。
  • JSON 数据(application/json):以 JSON 格式发送数据,适用于现代 Web API。
  • XML 数据(application/xml):以 XML 格式发送数据。
  • 原始数据(text/plain):纯文本数据。

示例

请求行和请求头示例
GET /api/users HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
Accept: application/json
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
请求体示例(POST 请求)
POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 45{"name": "John Doe", "age": 30}

在这个示例中,请求体是一个 JSON 格式的字符串,包含了用户的信息。

HTTP 中 GET 和 POST 的区别是什么?

在 HTTP 协议中,GET 和 POST 是两种常用的请求方法,它们在数据传递、安全性、使用场景等方面存在一些区别。以下是它们的主要区别:

1. 数据传递方式

  • GET:将请求参数附加在 URL 后面,以 ? 分隔,参数之间用 & 连接。例如:http://example.com/?key1=value1&key2=value2。这种方式适合传递少量数据。

  • POST:将请求参数放在请求体中,不会显示在 URL 中。例如:

    POST /api/users HTTP/1.1
    Host: example.com
    Content-Type: application/x-www-form-urlencodedkey1=value1&key2=value2
    

    这种方式适合传递大量数据。

2. 数据长度限制

  • GET:由于 URL 长度有限制(不同浏览器和服务器限制不同,通常在 2048 字节左右),GET 请求的参数长度也受到限制。
  • POST:请求体的长度没有限制,可以传递大量数据。

3. 安全性

  • GET:请求参数直接显示在 URL 中,可能会被浏览器保存在历史记录或日志文件中,存在安全风险。
  • POST:请求参数在请求体中,不会显示在 URL 中,相对更安全。

4. 缓存机制

  • GET:请求可以被浏览器缓存,适合用于获取公共资源(如图片、CSS 文件等)。
  • POST:请求通常不会被缓存,适合用于提交敏感数据或执行改变服务器状态的操作。

5. 使用场景

  • GET:通常用于获取资源,例如从服务器获取网页内容、搜索结果等。适合无副作用的操作。
  • POST:通常用于提交数据,例如表单提交、文件上传等。适合需要改变服务器状态的操作。

6. 书签功能

  • GET:可以将请求的 URL 作为书签保存,方便后续访问。
  • POST:无法将请求作为书签保存,因为请求参数在请求体中。

7. 历史记录

  • GET:请求的 URL 会保存在浏览器的历史记录中。
  • POST:请求的 URL 会保存在浏览器的历史记录中,但请求体中的参数不会保存。

8. 幂等性

  • GET:是幂等的,多次请求不会改变服务器状态。
  • POST:不是幂等的,多次请求可能会导致多次数据提交,改变服务器状态。

示例对比

GET 请求示例
GET /search?q=java+design+patterns HTTP/1.1
Host: example.com
POST 请求示例
POST /api/login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencodedusername=JohnDoe&password=12345

总结

  • GET 适合用于获取资源、传递少量数据、可缓存的场景。
  • POST 适合用于提交数据、传递大量数据、需要改变服务器状态的场景。

选择使用 GET 还是 POST,需要根据具体需求和场景来决定,以确保数据的安全性和请求的效率。

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

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

相关文章

IXTUR气控永磁铁:以高精度气控和稳定磁场,为机器人应用提供稳定抓取力

在现代工业生产和物流领域,物料的抓取与搬运是影响生产效率和成本控制的重要环节。传统夹爪在面对不同材质、形状和重量的物体时,常常存在适应性差、抓取不稳定、操作复杂等问题,导致生产流程中频繁出现停机调整,增加了人工干预成…

江科大51单片机笔记【16】AD/DA转换(下)

写在前言 此为博主自学江科大51单片机(B站)的笔记,方便后续重温知识 在后面的章节中,为了防止篇幅过长和易于查找,我把一个小节分成两部分来发,上章节主要是关于本节课的硬件介绍、电路图、原理图等理论知识…

【C++】 —— 笔试刷题day_4

刷题day_4 继续加油!!! 一、Fibonacci数列 题目链接:Fibonacci数列 题目解析 题目要求,输入一个数N,我们可以对N进行1/-1操作;题目让我们输出对N进行至少多少步可以变成Fibonacci数。 这里题目…

IP层之分片包的整合处理---BUG修复

在之前章节中,笔者就IP层之分片包的整合处理进行了概念介绍,以及代码编写和仿真,在整体代码调试环节,笔者发现了一个问题,在本文中,笔者将就这个BUG进行说明,以及进行修复,讲解代码实…

修复Electron项目Insecure Content-Security-Policy(内容安全策略CSP)警告的问题

将以下代码粘贴进html的<header>标签内 <metahttp-equiv"Content-Security-Policy"content"default-src self; style-src self unsafe-inline; img-src self data:; "> 解释一下上面代码中的属性含义 default-src self&#xff1a;配置加载策…

linux 的免密切换用户PAM配置

/etc/pam.d/su是Linux系统中与用户切换&#xff08;su命令&#xff09;相关的PAM&#xff08;Pluggable Authentication Modules&#xff0c;可插拔认证模块&#xff09;配置文件。以下是对它的详细介绍&#xff1a; 简介 作用 PAM是一种用于管理系统认证的机制&#xff0c;…

pyspark 数据处理的三种方式RDD、DataFrame、Spark SQL案例

目录 一、浅语二、三种数据处理方式比较2.1 RDD2.2 DataFrame2.3 Spark SQL 三、三种方法的创建方式3.1 创建RDD3.2 创建DataFrame3.2.1 创建sqlContext3.2.2 定义Schema3.2.3 创建DataFrame 3.3 创建SparkSQL3.3.1 登录临时表3.3.2 使用sparkSQL 四、三种方法显示部分字段4.1 …

文件解析漏洞靶机---- 练习通关攻略

1.安装靶机 点击 hackme.ova 文件&#xff0c;直接导入虚拟机&#xff0c;选择存储位置 2. 开启靶机 3. kali扫描同C段的ip&#xff0c;找到靶机ip nmap 192.168.182.1/24 经判断&#xff0c;靶机ip为&#xff1a;192.168.182.157 开启端口 http 80 、ssh 远程连接 22 4…

信号处理抽取多项滤波的数学推导与仿真

昨天的《信号处理之插值、抽取与多项滤波》&#xff0c;已经介绍了插值抽取的多项滤率&#xff0c;今天详细介绍多项滤波的数学推导&#xff0c;并附上实战仿真代码。 一、数学变换推导 1. 多相分解的核心思想 将FIR滤波器的系数 h ( n ) h(n) h(n)按相位分组&#xff0c;每…

【大模型基础_毛玉仁】2.3 基于 Encoder-only 架构的大语言模型

更多内容&#xff1a;XiaoJ的知识星球 目录 2.3 基于Encoder-only 架构的大语言模型2.3.1 Encoder-only 架构2.3.2 BERT 语言模型1&#xff09;BERT 模型结构2&#xff09;BERT 预训练方式3&#xff09;BERT 下游任务 2.3.3 BERT 衍生语言模型1&#xff09;RoBERTa 语言模型2&a…

AIP-165 按条件删除

编号165原文链接https://google.aip.dev/165状态批准创建日期2019-12-18更新日期2019-12-18 有时API需要提供一种机制&#xff0c;按照一些过滤参数删除大量资源&#xff0c;而非提供待删除的各资源名字。 这是一个稀有的场景&#xff0c;用于用户一次性删除数千或更多资源的…

【Maven教程与实战案例】

文章目录 前言一、Maven是什么&#xff1f;二、Maven的安装与配置1. 安装前置条件2. 下载与配置 Maven3. 验证安装 三、Maven的核心概念1. POM.xml 文件2. 构建生命周期与插件机制 四、实战项目示例1. 项目目录结构2. 编写代码App.javaAppTest.java 3. 构建项目4. 运行项目 前言…

20250310:OpenCV mat对象与base64互转

代码: https://github.com/ReneNyffenegger/cpp-base64 指南:https://renenyffenegger.ch/notes/development/Base64/Encoding-and-decoding-base-64-with-cpp/ 实操:

概率论的基本知识

逆概率还不懂&#xff0c;改天再想想。 联合概率 联合概率&#xff08;Joint Probability&#xff09; 是概率论中的一个重要概念&#xff0c;用于描述多个随机变量同时取某些值的概率。联合概率可以帮助我们理解多个变量之间的关系。

pytest数据库测试文章推荐

参考链接&#xff1a; 第一部分&#xff1a;http://alextechrants.blogspot.fi/2013/08/unit-testing-sqlalchemy-apps.html第二部分&#xff1a;http://alextechrants.blogspot.fi/2014/01/unit-testing-sqlalchemy-apps-part-2.html

如何自己做奶茶,从此告别奶茶店

自制大白兔奶茶&#xff0c;奶香与茶香激情碰撞&#xff0c;每一口都是香浓与甜蜜的双重诱惑&#xff0c;好喝到跺脚&#xff01;丝滑口感在舌尖舞动&#xff0c;仿佛味蕾在开派对。 简单几步就能复刻&#xff0c;成本超低&#xff0c;轻松在家享受奶茶自由。 材料:大白兔奶糖&…

SOA(面向服务架构)与微服务架构的区别与联系

SOA&#xff08;面向服务架构&#xff09;与微服务架构的区别与联系 1. 引言 在现代软件架构中&#xff0c;SOA&#xff08;Service-Oriented Architecture&#xff0c;面向服务架构&#xff09;和微服务架构&#xff08;Microservices Architecture&#xff09;是两种常见的…

LLM的准确率评估采用什么方式:准确率评估使用的是 `sklearn.metrics` 模块中的 `accuracy_score` 函数

LLM的准确率评估采用什么方式:准确率评估使用的是 sklearn.metrics 模块中的 accuracy_score 函数 评估方式 代码里的准确率评估是基于每个样本最后一个预测的 token 与真实的 token 进行对比。具体来说,它会遍历测试数据集中的每个样本,使用模型预测出最后一个 token 的 …

文件和异常

从文件中读取数据 读取整个文件 读取整个文件 要读取文件&#xff0c;需要一个包含几行文本的文件。下面首先创建一个文件&#xff0c;它包含精确 到小数点后30位的圆周率值&#xff0c;且在小数点后每10位处换行&#xff1a; pi_digits.txt 3.14159265358979323846264338…

2025最新版Windows通过GoLand远程连接Linux构建Go项目保姆级教学

以Ubuntu24.04和GoLand2024.1.6为例子&#xff0c;演示如何在Windows上通过GoLand远程连接Linux进行Go编程。 通过go version指令可以发现当前Ubuntu系统没有安装go。 go version 通过指令安装go&#xff0c;其他系统可以通过wget安装&#xff0c;要指定安装的具体go版本&…