http概述
-
无状态性:HTTP是一个无状态协议,这意味着服务器不会在请求之间保存任何会话信息。每个请求都是独立的,服务器不会记住之前的请求。
-
请求-响应模型:HTTP通信是基于客户端发送请求和服务器返回响应的模型。客户端(如Web浏览器)发送一个HTTP请求到服务器,服务器处理请求并返回一个HTTP响应。
-
方法:HTTP定义了一系列请求方法,最常见的包括GET(请求数据)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等。
-
状态码:HTTP使用状态码来表示请求的结果。例如,200表示成功,404表示未找到,500表示服务器错误等。
-
头部信息:HTTP请求和响应都包含头部信息,这些信息提供了关于请求或响应的元数据,如内容类型、内容长度、缓存指令等。
-
安全性:HTTP本身不提供加密,数据以明文形式传输,可能被截获。为了安全通信,通常使用HTTPS,即在HTTP上添加了SSL/TLS协议来加密数据。
-
基于TCP连接:HTTP/1.1支持持久连接,允许多个请求和响应在同一个TCP连接上复用,减少了连接建立和关闭的开销。
-
内容类型:HTTP能够传输多种类型的数据,如HTML、CSS、JavaScript、图片、视频等,每种数据类型通过MIME类型来标识。
-
扩展性:HTTP协议允许通过自定义头部字段来扩展协议的功能。
http-请求协议
请求行
-
请求方式 + 资源路径 + 协议
-
GET /target_url/findAll?name=user&status=1 HTTP/1.1 # 请求方式(get) 资源路径(/target_url/findAll?name=user&status=1) 协议( HTTP/1.1)
请求头
字段 | 描述 |
---|---|
Host | 请求的主机名 |
User-Agent | 浏览器版本,例如 Chrome 浏览器的标识类似 Mozilla/5.0 ... Chrome/79,IE 浏览器的标识类似 Mozilla/5.0 (Windows NT ...) like Gecko |
Accept | 表示浏览器能接受的资源类型,如 text/、image/ 或者 / 表示所有类型 |
Cookie | 存储在客户端的 cookie 数据 |
Accept-Language | 表示浏览器偏好的语言,服务器可以根据此返回不同语言的网页 |
Accept-Encoding | 表示浏览器可以支持的压缩类型,例如 gzip、deflate 等 |
Content-Type | 请求主体的数据类型 |
Content-Length | 请求主体的大小(单位:字节) |
请全体
-
跟随请求带过去的数据
http-响应协议
状态码
状态 | 描述 |
---|---|
1xx | 响应中临时状态码,表示请求已经接收,告诉客户端应该继续请求或者如果它已完成则忽略它。 |
2xx | 成功 - 表示请求已经被成功接收,处理已完成。 |
3xx | 重定向 - 重定向到其他地方;让客户端再发起一次请求以完成整个处理。 |
4xx | 客户端错误 - 处理发生错误,责任在客户端。如:请求了不存在的资源、客户端未被授权、禁止访问等。 |
5xx | 服务器错误 - 处理发生错误,责任在服务端。如:程序抛出异常等。 |
响应头
字段 | 描述 |
---|---|
Content-Type | 表示响应内容的类型,例如 text/html、application/json。 |
Content-Length | 表示响应内容的长度(字节数)。 |
Content-Encoding | 表示响应压缩算法,例如 gzip。 |
Cache-Control | 指示客户端如何缓存,例如 max-age=300 表示可以最多缓存 300 秒。 |
Set-Cookie | 告诉浏览器为当前页面所在的域设置 cookie。 |
http-解析协议
-
浏览器一般,自带解析
-
服务器一般要自己编写,或者使用第三方api