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.rhkb.cn/news/32925.html

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

相关文章

论文笔记 - ULTRA-SPARSE MEMORY NETWORK

1、目前Transformer模型现状 dense模型相同激活参数下,性能远低于MOE模型,因此大家倾向于训练MOE模型虽然同激活参数下,MOE性能比dense好,但MOE模型内存访问高,因此推理速度相比dense要慢不少。比如top2的moe&#xf…

人工智能基础知识笔记四:聚类分析

1、什么是聚类分析? 聚类分析是一种将数据分组的技术,目的是让同一组内的数据点彼此相似,而不同组之间的数据点差异较大。你可以把它想象成整理一堆杂乱无章的物品,把相似的物品放在一起,比如把书放在一个书架&#x…

DeepSeek结合Mermaid绘图(流程图、时序图、类图、状态图、甘特图、饼图)转载

思维速览: 本文将详细介绍如何利用DeepSeek结合Mermaid语法绘制各类专业图表,帮助你提高工作效率和文档质量。 ▍DeepSeek入门使用请看:deepseek保姆级入门教程(网页端使用 本地客户端部署 使用技巧) DeepSeek官网…

麒麟v10 ARM64架构系统升级mysql数据库从mysql-5.7.27到mysql-8.4.4图文教程

1、背景与问题说明 因mysql-5.2.27版本存在安全漏洞问题,为保障系统安全,需将处于生产环境的麒麟v10 ARM64架构系统服务器上当前部署的mysql-5.7.27版本升级到mysql-8.4.4,以规避潜在风险,提升系统整体的安全性和稳定性。 1.1 本…

关于我和快速幂的事()

我之前只会这样的(dfs): 不懂下面这种写法的具体逻辑: 看完下面的推理,再转转我聪明的小老戴: 法一中:把2^11看成(2^5)^2 法二中:把2^11看成(2^2)^5

CSS3-流星雨

1. 绘制标签 <div class"container"><span></span> </div>2. 设置div背景 在百度上搜索一幅星空的图片 <style>* {/* 初始化 */margin: 0;padding: 0;}body {/* 高度100% */height: 100vh;/* 溢出隐藏 */overflow: hidden;}.contai…

P3390 【模板】矩阵快速幂

把 f&#xff08;ll k&#xff09; 写成 f&#xff08;int k&#xff09; 结果又是tle又是wa的。找了半天错误。 &#xff08;为了节省一点时间&#xff0c;因为函数不能return数组&#xff0c;还把数组改写到结构体里&#xff09; 我在想考试怎么办&#xff0c;考试不能看过…

STM32F407 cubeIDE Bootloader APP 如何写

一、bootloader 代码如下&#xff1a; #define FLASH_JUMP_ADDR (0x0800c000) /* USER CODE END PD *//* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ----------…

[Space Shooter_1] Environment | CMake | SDL

环境&#xff1a; CCMakeSDLVS code图形化界面参考&#xff1a;itch.io csp vscode 控制面板 C代码生成流程 查找路径&#xff0c;来进行 cmake 链接 跨平台 cmake 一个库 如果已经有 cmake 来实现跨平台&#xff0c;链接 也可以不用这么麻烦了 set(CMAKE_RUNTIME_OUTPUT_DI…

PyTorch 入门学习

目录 PyTorch 定义 核心作用 应用场景 Pytorch 基本语法 1. 张量的创建 2. 张量的类型转换 3. 张量数值计算 4. 张量运算函数 5. 张量索引操作 6. 张量形状操作 7. 张量拼接操作 8. 自动微分模块 9. 案例-线性回归案例 PyTorch 定义 PyTorch 是一个基于 Python 深…

Shader中着色器的编译目标级别

1. # pragma target x.0 2. # pragma require xxx 支持的“#pragma target”名称 以下是支持的着色器模型列表&#xff0c;其中包含大致增加的功能集&#xff08;在某些情况下对于平台/GPU 的要求更高&#xff09;&#xff1a; #pragma target 2.0 适用于 Unity 支持的所有平…

【SpringBoot】实现登录功能

在上一篇博客中&#xff0c;我们讲解了注册页面的实现。在此基础上会跳转到登录页面&#xff0c;今天给大家带来的是使用 SpringBoot&#xff0c;MyBatis&#xff0c;Html&#xff0c;CSS&#xff0c;JavaScript&#xff0c;前后端交互实现一个登录功能。 目录 一、效果 二、…

【QT】事件系统入门——QEvent 基础与示例

一、事件介绍 事件是 应用程序内部或者外部产生的事情或者动作的统称 在 Qt 中使用一个对象来表示一个事件。所有的 Qt 事件均继承于抽象类 QEvent。事件是由系统或者 Qt 平台本身在不同的时刻发出的。当用户按下鼠标、敲下键盘&#xff0c;或者是窗口需要重新绘制的时候&…

蓝桥杯备赛-基础练习 day1

1、闰年判断 问题描述 给定一个年份&#xff0c;判断这一年是不是闰年。 当以下情况之一满足时&#xff0c;这一年是闰年:1.年份是4的倍数而不是100的倍数 2&#xff0e;年份是400的倍数。 其他的年份都不是闰年。 输入格式 输入包含一个…

【数据挖掘】知识蒸馏(Knowledge Distillation, KD)

1. 概念 知识蒸馏&#xff08;Knowledge Distillation, KD&#xff09;是一种模型压缩和知识迁移技术&#xff0c;旨在将大型复杂模型&#xff08;称为教师模型&#xff09;中的知识传递给一个较小的模型&#xff08;称为学生模型&#xff09;&#xff0c;以减少计算成本&…

HTMLCSS绘制三角形

1.代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>01triangle</title><s…

【数据结构】ArrayList顺序表

面向对象前置知识 ​ class(类)是一种类型&#xff0c;用class(类)可以创建类变量&#xff0c;类变量里存储变量与方法&#xff0c;创建类变量时都有开辟空间&#xff0c;类变量里的存储的成员变量都存储在堆区&#xff0c;类变量里存储的成员方法都存储在方法区&#xff0c;类…

Postman下载安装及简单入门

一&#xff0e;Postman简介 Postman是一款API测试工具&#xff0c;可以帮助开发、测试人员发送HTTP请求&#xff0c;与各种API进行交互&#xff0c;并分析响应 二&#xff0e;下载与安装 访问Postman官网&#xff08;https://www.postman.com/&#xff09;&#xff0c;下载适…

数据类设计_图片类设计之5_不规则类图形混合算法(前端架构)

前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 接续上一篇,讨论图片类型设计出来后在场景中如何表达,以及不规则图片的混合算法. 图片示意图 图片是怎样表示的,这里把前面的补上 这里的数字1是不规则数据类对…

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

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