启动web服务的软件视为中间件
静态网页
html、JavaScript等,没有办法调用系统资源(CMD,BASH),源码公开
(nodejs使用JavaScript,但是可以与数据库交互)
动态网页
php、java,与数据库做交互
中间件服务器
apache:轻量级web服务,常与php一起(lamp,mysql、php、apache),不适用于访问量过大或多线程
nginx:负载均衡、反向代理
tomcat:JAVA,专为javaweb设计
数据库
mysql,Redis
HTTP协议
只负责传输
起始行
格式:方法 + 请求目标 + HTTP版本
- 方法(Method):
GET:获取资源POST:提交数据PUT:更新资源DELETE:删除资源HEAD:获取响应头(无Body)PATCH:部分更新OPTIONS:查询服务器支持的HTTP方法
- 请求目标(Request Target):
- 通常是URL路径(如
/api/users),或完整URL(代理场景)。
- 通常是URL路径(如
- HTTP版本:
HTTP/1.0、HTTP/1.1(主流)、HTTP/2、HTTP/3。
请求头
| 头部字段 | 作用说明 | 示例值 |
|---|---|---|
Host |
目标服务器域名(HTTP/1.1必需) | Host: www.example.com |
User-Agent |
客户端标识(浏览器/爬虫等) | User-Agent: Chrome/120.0 |
Accept |
客户端支持的响应内容类型 | Accept: application/json |
Content-Type |
请求Body的类型(POST/PUT必需) | Content-Type: application/json |
Content-Length |
请求Body的字节长度 | Content-Length: 128 |
Authorization |
身份凭证(如Token) | Authorization: Bearer xxxx |
Cookie |
客户端携带的Cookie | Cookie: session_id=abc123 |
Cache-Control |
缓存策略(如 no-cache) |
Cache-Control: max-age=3600 |
请求Body
- 存在场景:
POST、PUT、PATCH等需要提交数据的请求。 - 格式:由
Content-Type指定:application/json:JSON数据application/x-www-form-urlencoded:表单数据(如name=John&age=30)multipart/form-data:文件上传
HTTP响应报文
1. 起始行(状态行)
格式:HTTP版本 + 状态码 + 状态描述
示例:
200 OK |
- 状态码(Status Code):
1xx:信息性状态码(如101 Switching Protocols)2xx:成功(如200 OK、201 Created)3xx:重定向(如301 Moved Permanently、304 Not Modified)4xx:客户端错误(如400 Bad Request、404 Not Found)5xx:服务器错误(如500 Internal Server Error)
2. 响应头部(Headers)
常用头部字段:
| 头部字段 | 作用说明 | 示例值 |
|---|---|---|
Server |
服务器软件信息 | Server: nginx/1.18.0 |
Content-Type |
响应Body的类型 | Content-Type: text/html |
Content-Length |
响应Body的字节长度 | Content-Length: 1024 |
Set-Cookie |
服务器设置Cookie | Set-Cookie: session_id=xyz |
Cache-Control |
控制缓存行为 | Cache-Control: public, max-age=3600 |
Location |
重定向目标URL(3xx响应必需) | Location: /new-page |
ETag |
资源标识(用于缓存验证) | ETag: "33a64df5" |
3. 响应Body
- 包含服务器返回的数据(如HTML、JSON、图片等)。
- 格式由
Content-Type指定:text/html:HTML网页application/json:JSON数据image/png:PNG图片
关键特性与头部字段
1. 连接管理
- 短连接(HTTP/1.0):每次请求后关闭TCP连接。
- 长连接(HTTP/1.1默认):
- 头部
Connection: keep-alive复用TCP连接。 - 减少握手开销,提升性能。
- 头部
2. 内容协商
客户端通过请求头声明偏好:
Accept:内容类型(如text/html, application/xml;q=0.9)Accept-Language:语言(如en-US, zh-CN;q=0.8)Accept-Encoding:压缩算法(如gzip, deflate)
3. 缓存控制
- 强缓存:
Cache-Control: max-age=3600(资源有效期3600秒)Expires: Wed, 21 Oct 2025 07:28:00 GMT(过期时间)
- 协商缓存(需向服务器验证):
Last-Modified(资源最后修改时间) +If-Modified-SinceETag(资源指纹) +If-None-Match
4. 安全与认证
- HTTPS:HTTP over TLS/SSL,加密传输。
- 认证机制:
Basic:Authorization: Basic base64(username:password)Bearer Token:Authorization: Bearer <token>
