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

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,需要根据具体需求和场景来决定,以确保数据的安全性和请求的效率。

相关文章:

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

常见的 HTTP 状态码有哪些? HTTP 状态码用于指示服务器对客户端请求的响应结果,常见的 HTTP 状态码可以分为以下几类: 1. 信息类(1xx) 100 Continue:客户端应继续发送请求。101 Switching Protocols&…...

IDEA软件安装环境配置中文插件

一、Java环境配置 1. JDK安装8 访问Oracle官网下载JDK8(推荐JDK8,11)Java Downloads | Oracle 双击安装程序,保持默认设置连续点击"下一步"完成安装 验证JDK安装,winR键 然后输入cmd,输入java…...

循环神经网络(RNN):时序建模的核心引擎与演进之路

在人工智能处理序列数据的战场上,循环神经网络(RNN)如同一个能够理解时间的智者。从 2015 年谷歌神经机器翻译系统颠覆传统方法,到 2023 年 ChatGPT 实现对话连续性,这些突破都植根于 RNN 对时序建模的深刻理解。本文将…...

HTML 表单 (form) 的作用解释

表单在网页中主要负责的是数据采集功能,一个表单基本由三部分组成: 表单标签:这里面包含了处理表单数据所用 CGI (Common Gateway Interface,通用网关接口)程序的 URL (Uniform Resource Locati…...

Windows控制台函数:控制台读取输入函数ReadConsoleA()

目录 什么是 ReadConsoleA? 它长什么样? 怎么用它? 它跟 std::cin 有什么不一样? 注意事项 什么是 ReadConsoleA? ReadConsoleA 是一个 Windows API 函数,用来从控制台读取用户输入。想象一下&#…...

网络tcp协议设置,网络tcp协议设置不了

网络TCP协议的设置通常涉及到多个方面,包括IP地址、子网掩码、默认网关、DNS服务器等参数的配置,以及TCP/IP协议栈本身的配置。如果遇到网络TCP协议设置不了的问题,可能是由多种原因导致的。以下是一些可能的原因及解决方法: 一、…...

电脑总显示串口正在被占用处理方法

1.现象 在嵌入式开发过程中,有很多情况下要使用串口调试,其中485/422/232转usb串口是非常常见的做法。 根据协议,接口芯片不同,需要安装对应的驱动程序,比如ch340,cp2102,CDM212364等驱动。可…...

R语言和RStudio安装

整体还是比较简单的,主要是记录个流程。 官方镜像站列表R语言官网 1 安装R(2025/3/6) R语言官网:The R Project for Statistical Computing 打开之后就Hello world一下吧 配置环境变量 2 安装RStudio 下载地址:htt…...

RHEL/CentOS 7.9使用firewalld限制出方向策略

背景 通常使用firewalld时候多为限制入方向访问,本次因有系统需要在生产环境部署测试环境,需求人希望在该测试环境中限制访问的对象,避免对生产造成影响 基础团队小伙伴参照rich-files,通过CLI,GUI反复进行进行配置验…...

设计模式之建造者模式:原理、实现与应用

引言 建造者模式(Builder Pattern)是一种创建型设计模式,它通过将复杂对象的构建过程分解为多个简单的步骤,使得对象的创建更加灵活和可维护。建造者模式特别适用于构建具有多个组成部分的复杂对象。本文将深入探讨建造者模式的原…...

1688店铺所有商品数据接口详解

​​一、接口概述淘宝开放平台提供 1688.items.onsale.get/taobao.item_search_shop 接口,可批量获取店铺在售商品列表,包含商品 ID、标题、价格、销量、图片等核心信息。该接口适用于商品库管理、竞品监控、数据分析等场景 ​二、接口调用流程 前期准…...

【C#学习笔记02】基本元素与数据类型

引言 深入了解C语言的基本元素、计算机存储器结构、常量与变量的概念以及数据类型。这些内容是C语言编程的基础,掌握它们对于编写高效、可靠的嵌入式程序至关重要。 1.C语言的基本元素 ​编程语言的发展离不开自然语言,所以编程语言的语法和词汇也是由…...

【语料数据爬虫】Python爬虫|批量采集工作报告数据(1)

前言 本文是该专栏的第4篇,后面会持续分享Python爬虫采集各种语料数据的的干货知识,值得关注。 在本文中,笔者将主要来介绍基于Python,来实现批量采集“工作报告”数据。同时,本文也是采集“工作报告”数据系列的第1篇。 采集相关数据的具体细节部分以及详细思路逻辑,笔…...

<建模软件安装教程1>Blender4.2系列

Blender4.2安装教程 0注意:Windows环境下安装 第一步,百度网盘提取安装包。百度网盘链接:通过网盘分享的文件:blender.zip 链接: https://pan.baidu.com/s/1OG0jMMtN0qWDSQ6z_rE-9w 提取码: 0309 --来自百度网盘超级会员v3的分…...

Docker极简部署开源播放器Splayer结合内网穿透远程流畅在线听歌

前言 嘿,各位音乐发烧友们!如果你厌倦了广告的打扰,渴望在忙碌的生活中找到一片宁静的音乐天地,那么今天这篇教程绝对适合你——如何在Ubuntu上用Docker快速搭建一款高颜值、无广告的某抑云音乐播放器Splayer。 Splayer不仅界面…...

基于YOLO(以YOLOv8为例)模型开发算法的详细步骤,包含算法代码、训练指导、数据集准备以及可能的改进方向

以下是一个基于YOLO(以YOLOv8为例)模型开发算法的详细步骤,包含算法代码、训练指导、数据集准备以及可能的改进方向。 1. 环境准备 首先,你需要安装必要的库。可以使用以下命令创建一个新的虚拟环境并安装所需的库: …...

显示器长时间黑屏

现象 电脑启动后,进入登录界面前会随机黑屏,有时候十几秒,有时候几分钟 进入桌面后,长时间不操作电脑黑屏,移动鼠标,点击键盘后尝试点亮屏幕,也会消耗较长时间 尝试 重装系统,或者重新安装显卡,都能够恢复,但过段时间以后又出现黑屏情况 集成显卡,独立显卡都出现过 操作系统…...

linux docker相关指令

1、镜像操作 0)、搜索:docker search 镜像名称 1)、拉取:docker pull 2)、推送:docker push 3)、查看:docker images 4)、查看所有镜像ID:d…...

V8引擎中的垃圾回收机制如何工作?

V8引擎中的垃圾回收机制主要通过分代回收和增量标记清除算法来管理内存。以下是其工作原理的详细说明: V8 的垃圾回收机制基于以下核心设计原则: 1. 分代假设:大多数对象的生命周期很短,只有少数对象会存活较长时间;…...

内网安全-横向移动PTH 哈希PTT 票据PTK 密匙Kerberos密码喷射

一.域横向pth,mimkatz,NTLM windwos server 2012 R2之前可能是NTLM和LM,之后为NTLM 1.mimkatz ptk 使用mimkatz进行横向移动 mimikatz sekurlsa::pth /user:administrator(目标本地用户名) /domain:192.168.3.32&a…...

自然语言处理文本分析:从词袋模型到认知智能的进化之旅

清晨,当智能音箱准确识别出"播放周杰伦最新专辑"的模糊语音指令时;午间,企业舆情系统自动标记出十万条评论中的负面情绪;深夜,科研人员用GPT-4解析百万篇论文发现新材料线索——这些场景背后,是自…...

洛谷 P2234:[HNOI2002] 营业额统计 ← STL set

【题目来源】 https://www.luogu.com.cn/problem/P2234 【题目描述】 Tiger 最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger 拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析…...

linux---天气爬虫

代码概述 这段代码实现了一个天气查询系统,支持实时天气、未来天气和历史天气查询。用户可以通过终端菜单选择查询类型,并输入城市名称来获取相应的天气信息。程序通过 TCP 连接发送 HTTP 请求,并解析返回的 JSON 数据来展示天气信息。 #in…...

STM32如何精准控制步进电机?

在工业自动化、机器人控制等场合,步进电机以其高精度、开环控制的特性得到了广泛应用。而在嵌入式系统中,使用STM32进行步进电机的精确控制,已成为开发者的首选方案之一。 本文将从嵌入式开发者的角度,深入探讨如何基于STM32 MCU…...

C语言:确定进制

题目&#xff1a; 6942对于十进制来说是错误的&#xff0c;但是对于13进制来说是正确的。即, 6(13) 9(13) 42(13)&#xff0c; 而 42(13)4131213054(10)。 任务是写一段程序&#xff0c;读入三个整数p、q和 r&#xff0c;然后确定一个进制 B(2<B<40) 使得 p q r。 如果…...

[免费]微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端+Vue管理端)(高级版)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端Vue管理端)(高级版)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端Vue管理端)(高级版…...

STM32 Bootloader理解

STM32 Bootloader个人理解 stm32单片机启动时会先运行一个引导程序Bootloader&#xff0c;该程序可以判断单片机的启动方式&#xff0c;例如stm32f103单片机会利用 boot0 、boot1 两个引脚判断启动模式。判断完启动模式后&#xff0c;设置 SP地址 以及 PC 指针指向对应的地址。…...

Linux SSHD 启动失败:OpenSSL 版本不匹配问题分析与解决

文章目录 Linux SSHD 启动失败&#xff1a;OpenSSL 版本不匹配问题分析与解决问题分析解决方案方法 1&#xff1a;重启 SSH 服务方法 2&#xff1a;检查 sshd 依赖的 OpenSSL 版本方法 3&#xff1a;检查 OpenSSL 共享库方法 4&#xff1a;重新安装 OpenSSH 总结 Linux SSHD 启…...

SpringBoot实战(三十五)微服务集成OAuth2.0(UAA)

目录 一、知识回顾1.1 什么是 OAuth2 协议&#xff1f;1.2 OAuth2 的4个角色1.3 OAuth2 的3种令牌1.4 OAuth2 的5种认证方式1.5 OAuth2 内置接口地址 二、UAA介绍2.1 概述2.2 UAA的主要功能2.3 UAA 的应用场景 三、微服务集成3.1 集成示例介绍3.2 集成测试 一、知识回顾 在进行…...

K8s 1.27.1 实战系列(七)Deployment

一、Deployment介绍 Deployment负责创建和更新应用程序的实例,使Pod拥有多副本,自愈,扩缩容等能力。创建Deployment后,Kubernetes Master 将应用程序实例调度到集群中的各个节点上。如果托管实例的节点关闭或被删除,Deployment控制器会将该实例替换为群集中另一个节点上的…...