HTTP: 超文本传输协议
HTTP 是一种应用层协议,用于传输超媒体文档,例如 HTML。它最初设计用于网络浏览器和网络服务器之间的通信,但也可以用于其他目的,例如机器对机器通信、API 的程序化访问等。
HTTP 遵循经典的客户端-服务器模型,客户端打开连接发起请求,然后等待接收服务器的响应。HTTP 是一种无状态协议,这意味着服务器在两次请求之间不保留任何会话数据,尽管后来添加的Cookie为某些客户端-服务器交互增加了状态。
参考
HTTP 参考文档包含有关头、请求方法、状态响应的详细信息,并列出了相关的规范和标准文档。
- HTTP 标头
-
消息头用于发送有关资源或 HTTP 消息的元数据,并描述客户端或服务器的行为。
- HTTP 请求方法
-
请求方法指示请求的目的以及请求成功后的预期结果。最常见的方法是用于从服务器检索和发送数据的
GET和POST,但也有其他方法用于不同的目的。 - HTTP 响应状态码
-
响应状态码表示特定 HTTP 请求的结果。响应分为五类:信息性、成功、重定向、客户端错误和服务器错误。
- HTTP 资源和规范
-
本页面列出了自 20 世纪 90 年代初首次指定 HTTP 以来,与其相关的资源。
以下小节也值得关注
- CSP 指令
-
Content-Security-Policy(CSP) 响应头允许网站管理员指定用户代理可以为给定页面加载哪些资源。本节列出了可在 CSP 头中使用的指令,并附有单独的文档页面,描述了这些指令的工作原理和使用方法。 - 权限策略指令
-
Permissions-Policy响应头提供了一种机制,允许或拒绝在文档中或文档内的任何元素中使用浏览器功能。本节列出了可在 Permissions-Policy 头中使用的指令,并附有单独的文档页面,描述了这些指令的工作原理和使用方法。
指南
HTTP 是一种可扩展协议,它依赖于资源和统一资源标识符 (URI) 等概念、基本的消息结构以及客户端-服务器通信模型。在这些概念之上,多年来开发了许多扩展,增加了功能和更新的语义,包括额外的 HTTP 方法和头。
HTTP 指南按照从一般概述到专业、用例驱动的主题的顺序排列。建议初学者从基础指南开始,然后再探索更集中的文章。
- HTTP 概述
-
HTTP 的基本功能、它能做什么、它在网络架构中的预期用途以及它在协议栈中的位置。
- HTTP 的演变
-
HTTP 创建于 20 世纪 90 年代初,并经过多次扩展。本文回顾了它的历史,描述了 HTTP/0.9、HTTP/1.0、HTTP/1.1,直到 HTTP/2 和 HTTP/3,以及多年来引入的新特性。
- 一个典型的 HTTP 会话
-
描述 HTTP 会话的流程,从建立连接、发送请求到接收响应。
- HTTP 消息
-
作为请求和响应传输的 HTTP 消息具有明确的结构。本文描述了这种一般结构、其目的以及不同类型的消息。
- MIME 类型
-
自 HTTP/1.0 以来,可以传输不同类型的内容。本文解释了如何使用
Content-Type头和 MIME 标准来实现这一点。网络开发人员常用的类型列表可在常见 MIME 类型中找到。 - HTTP 中的压缩
-
浏览器和服务器在通过网络发送消息之前会对其进行压缩,以减少需要传输的数据量,从而提高传输速度和带宽利用率。
- HTTP 缓存
-
缓存是为 Web 提供快速体验和有效利用资源的一个非常重要的机制。本文描述了不同的缓存方法以及如何使用 HTTP 头来控制它们。
- HTTP 身份验证
-
身份验证是一种在向服务器发出请求时验证客户端身份的方法。它确保只有授权用户或系统才能访问某些资源。
-
尽管 HTTP 是一种无状态协议,但服务器可以在响应中发送
Set-Cookie头。然后,客户端在随后的每个对服务器的请求中以Cookie请求头的形式返回 Cookie 的值。这增加了存储和交换少量数据的能力,从而有效地为某些客户端-服务器交互增加了状态。 - HTTP 中的重定向
-
URL 重定向,也称为 URL 转发,是一种为页面、表单、整个网站或 Web 应用程序提供多个 URL 地址的技术。HTTP 为此操作提供了一种特殊类型的响应,称为 HTTP 重定向。
- HTTP 条件请求
-
在条件请求中,请求的结果取决于请求中验证器的值。此方法在缓存和诸如恢复下载、在修改服务器上的文档时防止丢失更新等用例中大量使用。
- HTTP 范围请求
-
范围请求要求服务器将资源的特定部分(或多个部分)返回给客户端,而不是整个资源。当客户端知道他们只需要大型文件的一部分,或者应用程序允许用户暂停和恢复下载时,范围请求非常有用。
- 内容协商
-
HTTP 定义了一组消息头,以
Accept开头,作为浏览器宣布其偏好格式、语言或编码的方式。本文解释了这种声明如何发生,服务器应该如何反应,以及它如何选择最适合请求的响应。 - HTTP/1.x 中的连接管理
-
HTTP/1.1 是第一个支持持久连接和管道化的 HTTP 版本。本文解释了这两个概念,包括各自的优缺点。
- 协议升级机制
-
HTTP/1.1 提供了一种机制,可以使用
Upgrade头将已建立的连接升级到不同的协议。客户端可以将连接从 HTTP/1.1 升级到 HTTP/2,或者将 HTTP(S) 连接升级到 WebSocket (ws/wss)。 - 代理服务器和隧道
-
代理可以位于用户的本地计算机上,也可以位于用户的计算机和 Internet 上的目标服务器之间的任何位置。本页概述了有关代理的一些基本知识,并介绍了一些配置选项。
- HTTP 客户端提示
-
客户端提示是一组响应头,服务器可以使用它们主动向客户端请求有关设备、网络、用户和用户代理特定偏好的信息。然后,服务器可以根据客户端选择提供的信息来确定要发送哪些资源。
- 网络错误日志 实验性
-
网络错误日志是一种可以通过
NELHTTP 响应头配置的机制。此实验性头允许网站和应用程序选择接收来自支持浏览器的失败(甚至成功)网络抓取报告。 - 使用用户代理进行浏览器检测
-
使用用户代理嗅探来检测浏览器很少是好主意,但存在一些需要这样做的边缘情况。当有必要时,本文档将指导你尽可能正确地完成此操作,并重点强调在踏上这条路线之前需要考虑的因素。
安全和隐私
- 权限策略
-
权限策略为 Web 开发人员提供了一种机制,可以明确声明网站上可以使用和不能使用哪些功能。你定义了一组“策略”,这些策略限制了网站代码可以访问的 API 或修改浏览器针对某些功能的默认行为。
- 跨源资源共享(CORS)
-
跨站 HTTP 请求是请求来自与发出请求的资源不同域的资源。如今,网页非常普遍地加载跨站资源,例如,“域 A”页面(
http://domaina.example/)通过img元素请求“域 B”(http://domainb.foo/image.jpg)上的图像。CORS 允许 Web 开发人员控制其网站如何响应跨站请求。 - 内容安全策略(CSP)
-
CSP 允许网站管理员使用
Content-Security-Policy响应头来控制客户端可以为给定页面加载哪些资源。CSP 指南描述了内容安全策略的整体机制,它有助于检测和缓解某些类型的攻击,包括跨站脚本 (XSS) 和数据注入攻击。 - 跨源资源策略(CORP)
-
CORP 允许网站和应用程序选择防止来自其他源的特定请求(例如使用
和等元素发出的请求),以缓解推测性旁路攻击。 - Mozilla 网络安全指南
-
一系列提示,帮助运营团队创建安全的 Web 应用程序。
相关资源
- URI
-
统一资源标识符 (URI) 用于描述和定位 Web 上的资源,是 HTTP 请求中的重要组成部分。
- 为 Ogg 媒体配置服务器
-
本指南涵盖了一些服务器配置更改,这些更改可能对你的 Web 服务器正确提供 Ogg 媒体文件是必需的。如果你遇到服务器尚未配置为识别的其他媒体类型,此信息也可能有用。
工具和资源
用于理解和调试 HTTP 的有用工具和资源。
- Firefox 开发者工具
- HTTP 天文台
-
一个旨在帮助开发人员、系统管理员和安全专业人员安全地配置其站点的项目。
- RedBot
-
检查缓存相关头的工具。
- nghttp2
-
用 C 语言编写的 HTTP/2 客户端、服务器和代理实现,带有负载测试和基准测试工具以及 HPACK 编码器和解码器。
- curl
-
一个用于传输指定 URL 语法数据的命令行工具。支持 HTTP、HTTPS、WS、WSS 以及许多其他协议。
- 浏览器工作原理 (2011)
-
一篇关于浏览器内部机制和通过 HTTP 协议的请求流的非常全面的文章。