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-Control、Connection、Date、Pragma。 - 请求头(Request Headers):仅适用于请求,例如
Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、Cookie、Host、User-Agent。 - 响应头(Response Headers):仅适用于响应,例如
Age、Location、Server、Set-Cookie。 - 实体头(Entity Headers):适用于请求和响应中的实体部分,例如
Allow、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Expires、Last-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&…...
从0开始的操作系统手搓教程45——实现exec
目录 建立抽象 实现加载 实现sys_execv !!!提示:因为实现问题没有测试。所以更像是笔记! exec 函数的作用是用新的可执行文件替换当前进程的程序体。具体来说,exec 会将当前正在运行的用户进程的进程体&…...
Android TCP封装工具类
TCP通信的封装,我们可以从以下几个方面进行改进: 线程池优化:使用更高效的线程池配置,避免频繁创建和销毁线程。 连接重试机制:在网络不稳定时,自动重试连接。 心跳机制:保持长连接ÿ…...
解决火绒启动时,报安全服务异常,无法保障计算机安全
1.找到控制面板-安全和维护-更改用户账户控制设置 重启启动电脑解决。...
Spring Boot框架总结(超级详细)
前言 本篇文章包含Springboot配置文件解释、热部署、自动装配原理源码级剖析、内嵌tomcat源码级剖析、缓存深入、多环境部署等等,如果能耐心看完,想必会有不少收获。 一、Spring Boot基础应用 Spring Boot特征 概念: 约定优于配置&#…...
为什么要使用前缀索引,以及建立前缀索引:sql示例
背景: 你想啊,数据库里有些字段,它老长了,就像那种 varchar(255) 的字段,这玩意儿要是整个字段都拿来建索引,那可太占地方了。打个比方,这就好比你要在一个超级大的笔记本上记东西,每…...
Nuxt3 ssr build/dev时区分不同的环境
package.json "scripts": {"build": "nuxt build --dotenv .env.prod","build:dev": "nuxt build --dotenv .env.dev","postbuild": "mv -f .output ./dist/.output", //支持自定义文件名"dev&quo…...
嵌入式学习第二十四天--网络 服务器
服务器模型 tcp服务器: socket bind listen accept recv/send close 1.支持多客户端访问 //单循环服务器 socket bind listen while(1) { accept while(1) { recv/send } } close 2.支持多客户端同时访问 (并发能力) 并发服务器 socket bind …...
tcp/ip协议配置参数有哪些?tcp/ip协议需要设置的参数有哪些
TCP/IP协议的配置参数是确保网络设备能够正确接入互联网并与其他设备进行通信的关键设置。这些参数主要包括以下几个方面: 1. IP地址 定义:IP地址是网络中设备的唯一标识符,用于标识和定位设备。它由32位二进制数组成,通常采用点…...
我有点担心开始AI中台了
有个特点历史教训是很难吸取的 从大数据开始就是一窝蜂的去搞,不管有没有什么数据量。反正要来个Hadoop。其实有些企业数据一块硬盘都放得下。 微服务来了,也不管自己的系统是不是适合微服务。我个人经验得出,to B和to G的业务场景…...
《用Python+PyGame开发双人生存游戏!源码解析+完整开发思路分享》
导语 "你是否想过用Python开发一款可玩性高的双人合作游戏?本文将分享如何从零开始实现一款类《吸血鬼幸存者》的生存射击游戏!包含完整源码解析、角色系统设计、敌人AI逻辑等核心技术点,文末提供完整代码包下载!" 哈…...
优选算法系列(1. 双指针_上)
目录 双指针 一:移动零(easy) 题目链接:移动零 解法: 代码: 二:复写零(easy) 题目链接:复写零 编辑 解法: 代码: 三:快乐…...
永洪科技深度分析实战,零售企业的销量预测
随着人工智能技术的不断发展,智能预测已经成为各个领域的重要应用之一。现在,智能预测技术已经广泛应用于金融、零售、医疗、能源等领域,为企业和个人提供决策支持。 智能预测技术通过分析大量的数据,利用机器学习和深度学习算法…...
c语言笔记 函数参数的等价(上)
这三种写法在 C 语言中是等价的,因为它们都用于声明一个指向二维数组的指针,或者用于声明一个二维数组作为函数参数。它们的等价性源于 C 语言中数组和指针之间的密切关系。让我们逐一分析这三种写法: 在C语言中,当数组作为函数参…...
hive面试题--left join的坑
student 表: 课程表course: 1、key为null, 不关联 select * from student s left join course c on s.id c.s_id;2、on中过滤条件 与 where 过滤条件区别 on and c.id<>‘1001’ 先过滤右表数据,然后与左表关联 select * from student s le…...
CEH与OSCP:网络安全认证对比分析
在网络安全领域,渗透测试被视为至关重要的一环,帮助企业检测和修复系统漏洞。为提升行业标准,许多认证应运而生,其中CEH和OSCP作为行业认可度较高的认证,广泛被网络安全从业者选择。尽管这两者都涉及渗透测试领域&…...
HTML 属性详解:为网页元素赋予更多功能
在构建网页的过程中,HTML 是基础的标记语言,而 HTML 属性则是为 HTML 元素提供附加信息的重要组成部分。 一、属性的基本概念与使用 属性通常出现在 HTML 标签的开始标签内,以 “name"value"” 的形式存在。这里的 “name” 是属…...
Ceph(2):Ceph简介
1 Ceph简介 Ceph使用C语言开发,遵循LGPL协议开源。Sage Weil(Ceph论文发表者)于2011年创立了以Inktank公司主导Ceph的开发和社区维护。2014年Redhat收购inktank公司,并发布Inktank Ceph企业版(ICE)软件,业务场景聚焦云…...
国产编辑器EverEdit - 设置文件类型关联为EverEdit
1 设置-文件关联 1.1 应用场景 文件关联是指在文件管理器中双击某类型的文件,操作系统自动调用可以打开该文件的应用程序,比如:用户双击XXXX.txt文件,系统默认会使用记事本打开该文件。 由于各行各业都会定义特有的文件类型&…...
2025网络安全工程师:软考新挑战与职业发展探析
网络安全工程师的崛起 随着信息技术的迅猛发展,网络安全问题日益凸显,网络安全工程师这一职业逐渐受到社会各界的广泛关注。特别是在2025年,随着各项网络安全法规的完善和实施,网络安全工程师的角色愈发重要。他们不仅是企业信息…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx
“Reactive Stream Processing in Industrial IoT using DDS and Rx” 是指在工业物联网(IIoT)场景中,结合 DDS(Data Distribution Service) 和 Rx(Reactive Extensions) 技术,实现 …...
Easy Excel
Easy Excel 一、依赖引入二、基本使用1. 定义实体类(导入/导出共用)2. 写 Excel3. 读 Excel 三、常用注解说明(完整列表)四、进阶:自定义转换器(Converter) 其它自定义转换器没生效 Easy Excel在…...
