x-note
  • Introduction
  • JavaScript
    • JavaScript 作用域链
    • JavaScript 数据结构与类型
    • JavaScript 原型
    • JavaScript this 关键字
    • JavaScript 函数
    • JavaScript delete 运算符
    • JavaScript 内存管理与垃圾回收
    • JavaScript 严格模式与混乱模式
    • JavaScript 数字精度丢失
    • JavaScript 并发模型
    • 利用原型链实现继承
  • ECMAScript
    • ECMAScript 6 变量及常量的声明
    • ECMAScript 6 变量的解构赋值
    • ECMAScript 6 Promise 对象
    • ECMAScript 6 Symbol
    • ECMAScript 6 Proxy
    • ECMAScript 6 Reflect
    • ECMAScript 6 new.target
    • ECMAScript 6 Set 和 WeakSet
    • ECMAScript 6 Map 和 WeakMap
    • ECMAScript 6 Iterator
    • ECMAScript 6 Generator
    • ECMAScript 6 class
    • ECMAScript 7
    • ECMAScript 8 async 函数
    • ECMAScript 8 内存共享与原子性
    • ECMAScript 8 Others
    • ECMAScript 2018
    • ECMAScript 2019
  • CSS
    • CSS 块格式化上下文(BFC)
    • CSS 盒模型
    • CSS 外边距合并
    • CSS Float
    • CSS Position
    • CSS Border-Image
    • CSS BEM
    • CSS 表布局详解
    • 页面布局之单列布局
    • 页面布局之多列布局
  • React
    • React 组件的生命周期
    • React 虚拟 DOM
    • React Reconciliation
    • React Diff 算法核心
    • React Fiber
    • React Scheduling
    • React Context API
    • React Refs
    • React HMR
    • React Hook
  • VUE
    • VUE 响应式系统
    • VUE 渲染机制
    • 关于 Vue 的思考
  • Webpack
    • Webpack 基本概念
    • Webpack HMR
  • Babel
    • @babel/preset-env
  • WEB
    • WEB 基础知识及概念
      • 屏幕测量单位
      • 重绘与重排
      • 前端模块化系统
      • WEB 客户端存储
      • 浏览器的渲染过程
    • WEB 性能优化
      • WEB 性能指标
      • WEB 图片优化
      • 懒加载资源
    • WEB 安全
      • XSS
      • XSRF
      • 点击劫持
      • 同源策略(Same Origin Policy,SOP)
    • WEB 解决方案
      • webp 兼容方案
      • WEB 拖拽实现方案
    • WEB SEO
  • Git
    • Git 工作流
    • Git 内部原理
  • 传输协议
    • UDP
      • UDP 基本概念
    • TCP
      • TCP 基本概念
    • HTTP
      • HTTP 基础
      • HTTP 缓存
      • HTTP-2
      • HTTP-3
      • HTTPS
      • 自定义 HTTPS 证书
  • Protocol Buffers
    • Protocol Buffers 基础
  • gRPC
    • gRPC 简介
    • gRPC 基础概念
    • GRPC with GraphQL and TypeScript
  • 正则表达式
    • 正则表达式基础
    • 正则表达式的悲观回溯
  • 基础算法
    • 冒泡排序
    • 插入排序
    • 选择排序
    • 快速排序
    • 归并排序
    • 希尔排序
    • 堆排序
    • 桶排序
    • 计数排序
    • 基数排序
    • 二叉树的遍历
    • 动态规划
    • 回溯
  • 压缩算法
    • HPACK
    • QPACK
  • 设计模式
    • DDD
      • 模型元素的模式
    • 常见设计模式
      • 工厂方法
      • 抽象工厂
      • 构造器
      • 原型
      • 单例模式
      • 适配器模式
      • 桥接模式
      • 组合模式
      • 外观模式
      • 享元模式
      • 代理模式
      • 责任链模式
      • 命令模式
      • 迭代器模式
      • 中介者模式
      • 备忘录模式
      • 观察者模式
      • 状态模式
      • 策略模式
      • 模版方法模式
      • 访问者模式
      • 依赖注入
    • MVC
    • MVP
    • MVVM
  • 颜色空间
    • LCH
由 GitBook 提供支持
在本页
  • 相关概念
  • 资源
  • 事务
  • 报文
  • 历史版本
  • HTTP/0.9
  • HTTP/1.0
  • HTTP/1.0+
  • HTTP/1.1
  • HTTP/2.0
在GitHub上编辑
  1. 传输协议
  2. HTTP

HTTP 基础

HTTP(HyperText Transfer Protocol),即超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。基于 TCP/IP 协议实现。

相关概念

资源

媒体类型(MIME)

MIME(Multipurpose Internet Mail Extension)多用途英特网邮件扩展,最初是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。

MIME 类型是一种文本标记,由一种主类型和一个特定的子类型表示,主类型和子类型以斜杠 / 来分隔。

MIME 一般都是独立类型,例如:

  • text/plain、text/html、text/css

  • image/jpeg、image/png

  • audio/ogg、audio/ogg、audio/*

  • video/mp4

  • application/json、application/octet-stream

但是某些时候还需要更加的细分领域的类型种类,例如:

  • multipart/form-data

  • multipart/byteranges

HTTP 中可以通过头部的 Content-Type 设置 MIME 类型,以及 X-Content-Type-Options 阻止 MIME 嗅探

URI

URI(Uniform Resource Identifier),统一资源标识符,唯一标识并定位信息资源。

URL

URL(Uniform Resource Locator),统一资源定位符,是 URI 的最常见表达形式。

大部分的 URL 遵循一种标准格式:

{协议类型}://{服务器地址}[:{端口号}][/{资源层级 UNIX 文件路径}][?{查询条件}][#{片段}]
部分
描述

协议类型

HTTP,HTTPS 等

服务器地址

域名或 IP 地址

端口号

数字表示,HTTP 协议时默认为 80,HTTPS协议时默认为 433

资源层级文件路径

查询条件

? 字符微起点,每个查询条件以 & 分割,再以 = 分割条件和值

片段

以 # 字符为起点

事务

方法

HTTP 支持几种不同的请求命令,每种方法会告诉服务器执行什么样的行为。常见 HTTP 方法:

HTTP Method
描述

GET

获取相应指定资源

PUT

将来自客户端的数据存储到指定的服务器资源中

DELETE

移除指定资源

POST

将实体提交到指定的资源,通常导致状态或服务器上的副作用的更改.

PATCH

修改指定资源

HEAD

获取指定资源,但是不获取响应体中的内容

OPTION

用于描述指定资源的通信选项

CONNECT

建立一个到由目标资源标识的服务器的隧道

TRACE

沿着到目标资源的路径执行一个消息环回测试

状态码

每 HTTP 响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码。告知用户代理请求是否成功或者需要采取其它动作。

HTTP 响应码一般遵循以下规则:

分类
描述

1**

信息,服务器收到请求,需要请求者继续执行操作

2**

成功,操作被成功接收并处理

3**

重定向,需要进一步的操作以完成请求

4**

客户端错误,请求包含语法错误或无法完成请求

5**

服务器错误,服务器在处理请求的过程中发生了错误

常见 HTTP Response Code:

Response Code
描述

200

成功

302

重定向

404

资源不存在

报文

HTTP 报文由一行一行的简单字符串组成。HTTP 报文包括三个部分:

  • 起始行

  • 首部字段

  • 主体

请求报文和响应报文的起始行以及支持的首部字段不完全一样

历史版本

HTTP 协议大部分都是向下兼容的。

  • HTTP/0.9

  • HTTP/1.0

  • HTTP/1.0+

  • HTTP/1.1

  • HTTP-NG(HTTP/2.0)

HTTP/0.9

已过时。只接受 GET 请求,且不支持请求头。

HTTP/1.0

第一个广泛使用的版本。首次支持版本号、HTTP 首部字段、以及对多媒体对象的处理。

HTTP/1.0+

增加了许多新特性,如 keep-alive 连接、虚拟主机支持,以及代理连接支持。属于非正式的 HTTP 扩展版本。

HTTP/1.1

该版本主要关注于校正原先 HTTP 设计中的结构性缺陷,明确语义,引入重要的性能优化,并移除一些不好的特性。目前主要使用的 HTTP 版本。

HTTP/2.0

HTTP/2.0 重点关注的是性能的大幅度优化。

上一页HTTP下一页HTTP 缓存

最后更新于4年前