一、URL组成
<protocol>://<host>[:port]/[path][?query][#fragment]
- protocol: URL协议,常见的有http,https,ftp等等
- host: 主机名,即服务器名称。DNS会将这个名称解析为具体IP地址
- [:port] 端口号,一般省略使用默认端口,通常在开发和调试时才会使用自定义端口
- [path] URL路径,指向服务器上的具体资源。
- [?query] 查询字符串,多个参数使用“&”分隔,查询字符串发送给服务器,由服务器上的应用决定如何处理。
- [#fragment] 锚部分,指明一个资源的特定位置,由浏览器处理。
二、媒体类型-Content Type
类型 | 描述 | 示例 |
---|
text | 普通文本 | text/plain、text/html、text/javascript、text/css |
image | 图片 | image/gif、image/jpg、image/webp、image/bmp |
audio | 音频 | audio/ogg、audio/wav |
video | 视频 | video/ogg、video/webm |
application | 二进制数据等 | application/json、application/xml、application/pdf |
三、HTTP消息
- 起始行(请求)/状态行(响应):用于描述要执行的请求或对应的状态。
- HTTP消息头:请求或响应的相关属性、配置、描述等
- 空行:指明消息头已经发送完毕
- 消息正文(可以为空):包含请求数据或响应中资源的表述
四、HTTP方法
方法 | 作用 | 安全性 | 幂等性 |
---|
GET | 获取资源 | 是 | 否 |
POST | 创建资源 | 否 | 否 |
PUT | 更新指定资源 | 否 | 是 |
PATCH | 部分更新资源 | 否 | 否 |
DELETE | 删除资源 | 否 | 是 |
HEAD | 获取资源,响应中没有消息正文 | 是 | 是 |
OPTION | 获取指定资源所支持的操作 | 是 | 是 |
五、HTTP消息头
- 常用请求头
消息头 | 说明 |
---|
Accept | 可接受的响应内容类型 |
Accept-Charset | 可接受的字符集 |
Accept-Encoding | 可接受的响应内容编码方式 |
Accept-Language | 可接受的响应内容语言列表 |
Authorization | 协议中需要认证资源的认证信息 |
Cache-Control | 是否使用缓存 |
Connection | 客户端连接类型 |
Cookie | 向服务器提供Cookie |
Content-Length | 请求正文的长度 |
Content-Type | 请求正文的MIME类型 |
Host | 主机名及端口号 |
If-Match | 仅当客户端与服务器匹配时,才进行操作 |
If-Modified-Since | 当请求资源未被修改时返回304状态码 |
If-None-Match | 当请求资源未被修改时返回304状态码 |
If-Unmodified-Since | 当资源自某个特定时间以来未被修改时才发送响应 |
Origin | 发起跨域资源共享请求 |
User-Agent | 浏览器身份标识 |
- 常用响应头
消息头 | 说明 |
---|
Allow | 指明资源支持的有效操作 |
Cache-Control | 响应缓存机制 |
Connection | 该连接预期选项 |
Content-Length | 响应正文的长度 |
Content-Type | 响应正文的MIME类型 |
Content-Encoding | 响应正文的编码类型 |
Content-Language | 响应正文语言 |
ETag | 资源当前状态的标识符 |
Expires | 指定时间,超过则认为响应过期 |
Last-Modified | 资源最后修改日期 |
Location | 指向另一个URI,用于重定向和创建新资源时使用 |
Server | 服务器名称 |
Set-Cookie | 设置Cookie |
WWW-Authenticate | 请求应使用的认证方式 |
六、状态码
HTTP响应状态码由3个数字组成,指明HTTP请求结果,可分为5大类
- 1xx:请求
- 2xx: 成功
- 3xx: 重定向
- 4xx: 客户端错误
- 5xx: 服务端错误
常见状态码
状态码 | 名称 |
---|
200 | OK |
201 | Created |
204 | No Content |
304 | Not Modified |
400 | Bad Request |
401 | Unauthorized |
403 | Forbidden |
404 | Not Found |
405 | Method Not Allowed |
406 | Not Acceptable |
500 | Internal Server Error |