【学习】HTTP

HTTP

超文本传输协议(HTTP)是一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端—服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应。HTTP 是无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)。

工作原理是什么?

HTTP协议基于请求-响应模型,具体步骤如下:

  1. 客户端发起请求:客户端(如浏览器)向服务器发送一个HTTP请求。
  2. 服务器处理请求:服务器接收到请求后,解析请求并处理。
  3. 服务器返回响应:服务器生成一个HTTP响应并将其发送回客户端。
  4. 客户端处理响应:客户端接收到响应后,解析响应并处理(如渲染HTML页面)。

HTTP请求和响应的结构是什么?

HTTP请求

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

  1. 请求行(Request Line)
  2. 请求头(Request Headers)
  3. 空行(Blank Line)
  4. 请求体(Request Body,可选)
请求行(Request Line)

请求行包含三个部分,分别是请求方法、请求的URL和HTTP版本。
格式:

<请求方法> <请求URL> <HTTP版本>

示例:

GET /index.html HTTP/1.1
  • 请求方法:常见的请求方法有GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH等。
  • 请求URL:请求的资源路径。
  • HTTP版本:通常为HTTP/1.1。
请求头(Request Headers)

请求头包含一系列键值对,提供关于请求的附加信息。每个头字段由名称和值组成,中间用冒号分隔。
示例:

Host: www.example.com
Accept: text/html,application/xhtml+xml
User-Agent: Mozilla/5.0

常见的请求头字段包括:

  • Host:请求的目标主机名和端口号。
  • Accept:客户端可以接受的内容类型。
  • User-Agent:客户端的用户代理信息,如浏览器类型和版本。
  • Content-Type:请求体的媒体类型,如application/json。
  • Content-Length:请求体的长度(字节数)。
  • Authorization:用于身份验证的凭证。
空行(Blank Line)

请求头和请求体之间有一个空行,表示请求头部分结束。

请求体(Request Body,可选)

请求体包含客户端发送给服务器的数据,如表单数据、JSON对象等。对于GET请求,请求体通常是空的;而对于POST、PUT等方法,请求体可能包含数据。
示例:

name=John&age=30
HTTP响应

一个HTTP响应由以下几个部分组成:

  1. 状态行(Status Line)
  2. 响应头(Response Headers)
  3. 空行(Blank Line)
  4. 响应体(Response Body,可选)
状态行(Status Line)

状态行包含三个部分,分别是HTTP版本、状态码和状态消息。
格式:

<HTTP版本> <状态码> <状态消息>

示例:

HTTP/1.1 200 OK
  • HTTP版本:通常为HTTP/1.1。
  • 状态码:一个三位数字,表示请求的处理结果。
  • 状态消息:状态码的简短描述,如OK、Not Found等。
响应头(Response Headers)

响应头包含一系列键值对,提供关于响应的附加信息。每个头字段由名称和值组成,中间用冒号分隔。

Content-Type: text/html
Content-Length: 1354

常见的响应头字段包括:

  • Content-Type:响应体的媒体类型,如text/html。
  • Content-Length:响应体的长度(字节数)。
  • Set-Cookie:设置客户端的Cookie。
  • Location:用于重定向,指定新的URL。
  • Cache-Control:控制缓存的行为,如max-age、no-cache等。
空行(Blank Line)

响应头和响应体之间有一个空行,表示响应头部分结束。

响应体(Response Body,可选)

响应体包含服务器返回给客户端的数据,如HTML文档、图片等。对于某些状态码(如204 No Content),响应体可能是空的。

HTTP方法(GET, POST, PUT, DELETE等)的用途是什么?

HTTP方法定义了客户端与服务器之间交互的不同方式。每个方法都有特定的用途和语义。

GET

用途
请求指定的资源。GET方法用于从服务器获取数据。
特点

  • 幂等性:多次相同的GET请求应该返回相同的结果。
  • 安全:GET请求不应该有副作用,即不应该改变服务器上的资源状态。
  • 缓存:GET请求可以被缓存。
  • 参数:参数通过URL传递,限制了参数的长度。
POST

用途
向指定的资源提交数据,通常用于提交表单或上传文件。
特点

  • 非幂等性:多次相同的POST请求可能会产生不同的结果。
  • 不安全:POST请求可能会改变服务器上的资源状态。
  • 无缓存:POST请求不会被缓存。
  • 参数:参数通过请求体传递,没有长度限制。
PUT

用途
替换指定资源的所有当前表示。PUT方法用于更新资源。
特点

  • 幂等性:多次相同的PUT请求应该产生相同的结果。
  • 不安全:PUT请求可能会改变服务器上的资源状态。
  • 无缓存:PUT请求不会被缓存。
  • 参数:参数通过请求体传递。
DELETE

用途
删除指定的资源。
特点

  • 幂等性:多次相同的DELETE请求应该产生相同的结果。
  • 不安全:DELETE请求可能会改变服务器上的资源状态。
  • 无缓存:DELETE请求不会被缓存。
HEAD

用途
请求指定资源的响应头部,但不返回响应体。HEAD方法用于获取资源的元数据。
特点

  • 幂等性:多次相同的HEAD请求应该返回相同的结果。
  • 安全:HEAD请求不应该有副作用。
  • 缓存:HEAD请求可以被缓存。
OPTIONS

用途
请求指定资源的通信选项。OPTIONS方法用于获取目标资源所支持的通信选项。
特点

  • 幂等性:多次相同的OPTIONS请求应该返回相同的结果。
  • 安全:OPTIONS请求不应该有副作用。
  • 缓存:OPTIONS请求可以被缓存。
PATCH

用途
对指定资源进行部分更新。PATCH方法用于修改资源的部分属性。
特点

  • 非幂等性:多次相同的PATCH请求可能会产生不同的结果。
  • 不安全:PATCH请求可能会改变服务器上的资源状态。
  • 无缓存:PATCH请求不会被缓存。
  • 参数:参数通过请求体传递。
幂等

如果同样的请求被执行一次与连续执行多次,对服务器的预期影响是相同的,那么称这个 HTTP 方法是幂等的。

HTTP状态码的分类和常见状态码有哪些?

HTTP状态码是服务器在响应客户端请求时返回的一个数字代码,用于指示请求的处理结果。

HTTP状态码的分类
  1. 信息响应 (100–199)
  2. 成功响应 (200–299)
  3. 重定向消息 (300–399)
  4. 客户端错误响应 (400–499)
  5. 服务端错误响应 (500–599)
常见状态码
状态码描述说明
100Continue继续发送请求体
101Switching Protocols切换协议
200OK请求成功
201Created资源已创建
202Accepted请求已接受,但未处理完成
204No Content请求成功,但响应体为空
301Moved Permanently资源已永久移动
302Found资源临时移动
304Not Modified资源未修改
307Temporary Redirect临时重定向
308Permanent Redirect永久重定向
400Bad Request请求无效
401Unauthorized需要身份认证
403Forbidden禁止访问
404Not Found资源未找到
405Method Not Allowed方法不被允许
408Request Timeout请求超时
429Too Many Requests请求过多
500Internal Server Error服务器内部错误
501Not Implemented不支持的请求方法
502Bad Gateway无效的响应
503Service Unavailable服务不可用
504Gateway Timeout上游服务器超时

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

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

相关文章

前端神经网络入门(二):如何利用 WebGPU 进行数值计算,实现大规模数据的计算加速?- 边读边按下F12跑代码吧

在 Web 应用开发中&#xff0c;JavaScript 是前端开发者们最常用的语言。然而&#xff0c;当面对大规模数据处理和计算任务时&#xff0c;JavaScript 在浏览器中的执行往往会受到诸多性能瓶颈的限制。幸运的是&#xff0c;WebGPU 的出现&#xff0c;为我们提供了在前端实现高性…

新手教学系列——善用 VSCode 工作区,让开发更高效

引言 作为一名开发者,你是否曾经在项目中频繁地切换不同文件夹,打开无数个 VSCode 窗口?特别是当你同时参与多个项目或者处理多个模块时,这种情况更是家常便饭。很快,你的任务栏上挤满了 VSCode 的小图标,切换起来手忙脚乱,工作效率直线下降。这时候,你可能会问:“有…

Oracle故障处理:ora-12514 与 ora-28547

目录 项目场景 问题分析 问题总结 项目场景 现场同事求助说&#xff1a;有个刚刚部署在Windows上的Oracle11gR2数据库&#xff08;单机单实例&#xff09;&#xff0c;使用PLSQL工具连接不上。帮忙查看后&#xff0c;发现未装Oracle client&#xff0c;指导其安装完Oracle客…

【miniMax开放平台-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被机器执行自动化程序攻击&#xff0c;存在如下风险&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露&#xff0c;不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 &#xff0c;造成用户无法登陆、注册&#xff0c;大量收到垃圾短信的…

26-ES集群搭建、身份认证配置

虚机搭建 添加es用户 elasticsearch 默认不允许root用户启动&#xff0c;所以需要创建es用户 useradd elasticsearch passwd elasticsearch 解压安装包 #解压es tar -xvzf elasticsearch-7.14.2-linux-x86_64.tar.gz 将文件夹赋予es用户权限 #将文件夹赋予es用户权限 sud…

OpenHarmony的公共事件

OpenHarmony的公共事件 公共事件简介 CES&#xff08;Common Event Service&#xff0c;公共事件服务&#xff09;为应用程序提供订阅、发布、退订公共事件的能力。 公共事件分类 公共事件从系统角度可分为&#xff1a;系统公共事件和自定义公共事件。 系统公共事件&#…

【AlphaFold3】开源本地的安装及使用

文章目录 安装安装DockerInstalling Docker on Host启用Rootless Docker 安装 GPU 支持安装 NVIDIA 驱动程序安装 NVIDIA 对 Docker 的支持 获取 AlphaFold 3 源代码获取基因数据库获取模型参数构建将运行 AlphaFold 3 的 Docker 容器 参考 AlphaFold3: https://github.com/goo…

npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)

您提供的命令 npm list -g --depth0 是在 Node Package Manager (npm) 的上下文中使用的&#xff0c;用来列出全局安装的所有 npm 软件包而不显示它们的依赖项。 这是它的运作方式&#xff1a; npm list -g --depth0-g: 指定列表应包括全局安装的软件包。--depth0: 限制树形结…

Spring Boot框架:电商系统的技术革新

4 系统设计 网上商城系统的设计方案比如功能框架的设计&#xff0c;比如数据库的设计的好坏也就决定了该系统在开发层面是否高效&#xff0c;以及在系统维护层面是否容易维护和升级&#xff0c;因为在系统实现阶段是需要考虑用户的所有需求&#xff0c;要是在设计阶段没有经过全…

【数据分享】中国对外投资合作发展报告(2013-2023)

数据介绍 绪 论............................................................................................................................. 1 对外投资合作高质量发展迈出新步伐................................................................... 2 第一篇 发…

【深度学习】LSTM、BiLSTM详解

文章目录 1. LSTM简介&#xff1a;2. LSTM结构图&#xff1a;3. 单层LSTM详解4. 双层LSTM详解5. BiLSTM6. Pytorch实现LSTM示例7. nn.LSTM参数详解 1. LSTM简介&#xff1a; LSTM是一种循环神经网络&#xff0c;它可以处理和预测时间序列中间隔和延迟相对较长的重要事件。LSTM通…

【云原生系列--Longhorn的部署】

Longhorn部署手册 1.部署longhorn longhorn架构图&#xff1a; 1.1部署环境要求 kubernetes版本要大于v1.21 每个节点都必须装open-iscsi &#xff0c;Longhorn依赖于 iscsiadm主机为 Kubernetes 提供持久卷。 apt-get install -y open-iscsiRWX 支持要求每个节点都安装 N…

【Hadoop】【hdfs】【大数据技术基础】实验三 HDFS 基础编程实验

实验三&#xff1a; HDFS Java API编程实践 实验题目 HDFS Java API编程实践 实验目的 熟悉HDFS操作常用的Java API。 实验平台 操作系统&#xff1a;Linux Hadoop版本&#xff1a;2.6.0或以上版本 JDK版本&#xff1a;1.6或以上版本 Java IDE&#xff1a;Eclipse 实验…

ssm114基于SSM框架的网上拍卖系统的设计与实现+vue(论文+源码)_kaic

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff0c;商品拍卖当然也不能排除在外&#xff0c;随着商品拍卖管理的不断成熟&#xff0c;它彻底改变了过去传统的经营管理方式&#xff0c;不仅使商品…

Transformer中的算子:其中Q,K,V就是算子

目录 Transformer中的算子 其中Q,K,V就是算子 一、数学中的算子 二、计算机科学中的算子 三、深度学习中的算子 四、称呼的由来 Transformer中的算子 其中Q,K,V就是算子 “算子”这一称呼源于其在数学、计算机科学以及深度学习等多个领域中的广泛应用和特定功能。以下是…

厦大南洋理工最新开源,一种面向户外场景的特征-几何一致性无监督点云配准方法

导读 本文提出了INTEGER&#xff0c;一种面向户外点云数据的无监督配准方法&#xff0c;通过整合高层上下文和低层几何特征信息来生成更可靠的伪标签。该方法基于教师-学生框架&#xff0c;创新性地引入特征-几何一致性挖掘&#xff08;FGCM&#xff09;模块以提高伪标签的准确…

生产环境中AI调用的优化:AI网关高价值应用实践

随着越来越多的组织将生成式AI引入生产环境&#xff0c;他们面临的挑战已经超出了初步实施的范畴。如果管理不当&#xff0c;扩展性限制、安全漏洞和性能瓶颈可能会阻碍AI应用的推广。实际问题如用户数据的安全性、固定容量限制、成本管理和延迟优化等&#xff0c;需要创新的解…

Redis 概 述 和 安 装

安 装 r e d i s: 1. 下 载 r e dis h t t p s : / / d o w n l o a d . r e d i s . i o / r e l e a s e s / 2. 将 redis 安装包拷贝到 /opt/ 目录 3. 解压 tar -zvxf redis-6.2.1.tar.gz 4. 安装gcc yum install gcc 5. 进入目录 cd redis-6.2.1 6. 编译 make …

SpringBoot 2.2.10 无法执行Test单元测试

很早之前的项目今天clone现在&#xff0c;想执行一个业务订单的检查&#xff0c;该检查的代码放在test单元测试中&#xff0c;启动也是好好的&#xff0c;当点击对应的方法执行Test的时候就报错 tip&#xff1a;已添加spring-boot-test-starter 所以本身就引入了junit5的库 No…

[项目代码] YOLOv5 铁路工人安全帽安全背心识别 [目标检测]

YOLOv5是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv5具有更高的…