简单了解 HTTP 基础知识

HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在网络上传输数据的一种协议,对于网络开发人员来说,理解这一协议是至关重要的。由于其广泛的应用,除了在网页应用传输数据之外,它还被应用于物联网(IoT)中的数据和命令传输。

HTTP 协议的第一个版本只有一个方法,即 GET,用于从服务器请求页面。服务器的响应总是一个 HTML 页面。要了解 HTTP 协议最初的简单设计,请参阅原始规范,该规范文档仅有一页。

从最初的 0.9 版本开始,HTTP 已经发展了几个版本。当前的版本是 1.1,并于 2014 年最后一次修订。

工作原理

HTTP 作为互联网协议之一,它是基于文本的命令和响应协议,使用客户端-服务器通信模型。

客户端发出请求,服务器做出响应。HTTP 协议是无状态协议,意味着服务器不需要存储会话信息,每个请求都是独立的。更多信息

这意味着:

  • 所有请求来自客户端(如您的浏览器)。
  • 服务器对请求作出响应。
  • 请求(命令)和响应均为可读文本格式。
  • 请求彼此独立,服务器不需要跟踪请求。

请求与响应结构

请求和响应的消息结构相同,如下所示:

一个请求包括:

命令或请求 + 可选的头部 + 可选的内容体

一个响应包括:

状态码 + 可选的头部 + 可选的内容体

使用简单的 CRLF (回车和换行)组合来分隔各部分,单独的空行(CRLF)表示头部结束。

如果请求或响应包含消息体 ,则这一情况在头部中表明

消息体的存在通过内容长度(Content-Length)传输编码(Transfer-Encoding) 头域来信号化。请求消息的构架与方法语义无关,即使该方法没有定义任何消息体的用途。 -- 参见 RFC 7230第 3.3 节。

请注意:消息体后不跟随 CRLF。参见 RFC 7230 第 3.5 节

HTTP 请求详解

我们之前已经看到了一般的请求和响应格式,现在我们将更详细地介绍请求消息。

起始行是必须的,其结构如下:

方法 + 资源路径 + 协议版本

例如,如果我们尝试访问 www.testsite5.com 上的网页 testpage.htm,请求的起始行将是:

GET /test.htm HTTP/1.1

其中:

  • GET 是方法
  • /testpage.htm 是资源的相对路径
  • HTTP/1.1 是我们使用的协议版本

注释:

  1. 相对路径不包括域名。
  2. Web 浏览器使用我们输入的 URL 来创建资源的相对 URI

注意: URL (统一资源定位符)用于网页,它是URI(统一资源标识符)的一个例子。

浏览器实际上不显示 HTTP 请求,只能通过特殊工具如 http header live(Firefox) 查看。

HTTP 与 URL

大多数人熟悉在 Web 浏览器中输入 URL。通常看起来像这样:

URL 还可以包含通常由浏览器隐藏的端口,但您可以手动包括它,如下图所示:

这告知网页浏览器资源的地址以及检索资源所使用的协议 (HTTP)

HTTP 是从服务器到客户端传输资源(网页、图片、视频等)的传输协议。

HTTP 响应和响应代码

每个请求都有一个响应。响应包括:

  • 状态码描述
  • 一个或多个可选的头部
  • 可选的消息主体,可以包括多行,甚至二进制数据

响应状态码 分为 5 组,每组有其含义和三位数字代码:

  • 1xx -- 信息性
  • 2xx -- 成功
  • 3xx -- 多种选择
  • 4xx -- 客户端错误
  • 5xx -- 服务器错误

例如,一个成功的页面请求将返回一个 200 响应码,一个不成功的请求将返回一个 400 响应码。

您可以在这里找到完整的列表及其含义。

请求响应示例

我们将检查访问简单网页(testpage.htm)时的请求和响应。

这是我在浏览器地址栏中输入的:

这是浏览器显示的响应:

以下是幕后发生的 HTTP请求-响应 的屏幕截图:

注意 ,浏览器自动插入请求头,同样地,Web 服务器也自动插入响应头。请求中没有正文内容。响应中的正文内容是网页,在浏览器中显示,并不由实时头部工具显示。

请求类型

到目前为止,我们还未提及请求类型,但我们在示例中已经见到了 GET 请求类型。

GET 请求 类型或方法用于从 Web 服务器请求资源。GET 是最常用的请求类型,并且是原始 HTTP 规范中唯一的请求类型。

请求类型、方法或动词

HTTP 协议现在支持 8 种请求类型,也称为方法或动词,它们是:

  • GET -- 从服务器请求资源
  • POST -- 向服务器提交资源(例如,文件上传)
  • PUT -- 与 POST 相似,但用于替换资源
  • DELETE -- 从服务器删除资源
  • HEAD -- 类似 GET,但只返回头部而不返回内容
  • OPTIONS -- 获取资源的选项
  • PATCH -- 对资源应用修改
  • TRACE -- 执行消息回环

在今天的 Internet 上,GET (获取网页)和 POST(提交 Web 表单)方法是最常使用的。

其他方法在与 Web 和物联网 APIs 工作时使用,尤其是 PUT、DELETE 和 HEAD。

相关推荐
0思必得07 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
东东5167 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino7 小时前
图片、文件的预览
前端·javascript
layman05289 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔9 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李9 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN9 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒9 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局
PHP武器库9 小时前
ULUI:不止于按钮和菜单,一个专注于“业务组件”的纯 CSS 框架
前端·css
电商API_180079052479 小时前
第三方淘宝商品详情 API 全维度调用指南:从技术对接到生产落地
java·大数据·前端·数据库·人工智能·网络爬虫