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 遵循一种标准格式:
部分 | 描述 |
---|---|
协议类型 | 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 重点关注的是性能的大幅度优化。
最后更新于