x-note
搜索文档…
⌃K

HTTP 基础

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

相关概念

资源

媒体类型(MIME)

MIME(Multipurpose Internet Mail Extension)多用途英特网邮件扩展,最初是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。
MIME 类型是一种文本标记,由一种主类型和一个特定的子类型表示,主类型和子类型以斜杠 / 来分隔。
MIME 一般都是独立类型,例如:
  • text/plaintext/htmltext/css
  • image/jpegimage/png
  • audio/oggaudio/oggaudio/*
  • video/mp4
  • application/jsonapplication/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 重点关注的是性能的大幅度优化。
最近更新 2yr ago