上一篇
http协议的网站
- 行业动态
- 2025-05-01
- 3667
HTTP协议是应用层协议,基于TCP/IP,默认端口80,采用请求
HTTP协议基础解析
HTTP协议
HTTP(HyperText Transfer Protocol)是用于分布式、协作式、超媒体信息系统的应用层协议,定义了客户端(浏览器)与服务器之间的通信规则。
核心特性:
- 无状态:每次请求独立,服务器不保存上下文。
- 明文传输:数据以纯文本形式传输(未加密时)。
- 基于TCP:依赖传输层的TCP协议保证可靠性。
- 多版本兼容:HTTP/1.0 → HTTP/1.1 → HTTP/2 → HTTP/3。
请求-响应模型
客户端发起请求:
- 格式:
请求行 + 请求头 + 消息体
- 示例:
GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0
- 格式:
服务器返回响应:
- 格式:
状态行 + 响应头 + 消息体
- 示例:
HTTP/1.1 200 OK Content-Type: text/html Content-Length: 1234 <html>...</html>
- 格式:
流程图:
客户端 → 请求 → 服务器 → 响应 → 客户端
HTTP请求方法
方法 | 用途 | 是否带Body | 安全性 |
---|---|---|---|
GET | 获取资源 | 无 | 安全(仅请求,无副作用) |
POST | 提交数据 | 有 | 非安全(可能修改服务器状态) |
PUT | 更新资源 | 有 | 非安全 |
DELETE | 删除资源 | 无 | 非安全 |
HEAD | 获取头信息(不返回Body) | 无 | 安全 |
GET vs POST:
- 参数位置:GET参数在URL,POST参数在Body。
- 缓存:GET可缓存,POST通常不缓存。
- 长度限制:GET受URL长度限制(约2KB),POST无限制。
HTTP状态码
类别 | 含义 | 常见状态码 |
---|---|---|
1xx | 信息响应 | 100 Continue(继续发送请求) |
2xx | 成功 | 200 OK、204 No Content |
3xx | 重定向 | 301 Moved Permanently、302 Found |
4xx | 客户端错误 | 400 Bad Request、403 Forbidden、404 Not Found |
5xx | 服务器错误 | 500 Internal Server Error、503 Service Unavailable |
HTTP头部字段
通用头部:
Date
:请求/响应的时间。Content-Type
:媒体类型(如text/html
)。Content-Length
:Body的字节长度。
请求头:
Host
:目标服务器域名。User-Agent
:客户端信息(浏览器类型)。Referer
:来源页面URL。
响应头:
Location
:重定向的目标URL(3xx状态码时)。Set-Cookie
:设置Cookie。Cache-Control
:缓存策略(如max-age=3600
)。
示例表格:
| 头部字段 | 作用 | 示例值 |
|———-|——|——–|
| Accept
| 客户端支持的媒体类型 | text/html,application/json
|
| Server
| 服务器软件信息 | Apache/2.4.1
|
| If-Modified-Since
| 条件请求(缓存验证) | Wed, 21 Oct 2023 07:28:00 GMT
|
HTTP与HTTPS的区别
特性 | HTTP | HTTPS |
---|---|---|
加密 | 明文传输 | SSL/TLS加密 |
端口 | 80 | 443 |
证书 | 无 | 需要CA签发的证书 |
安全性 | 易被窃听/改动 | 防窃听、防改动 |
性能 | 低(无加密开销) | 高(加密解密消耗资源) |
相关问题与解答
Q1:HTTP的“无状态”特性是什么意思?如何解决?
A1:
- 无状态:服务器不记录前后请求的关联,每次请求独立处理。
- 解决方案:通过Cookie或Session ID在客户端和服务器间维护状态。
Q2:为什么POST请求比GET更安全?
A2:
- GET:参数暴露在URL中,可能被浏览器历史记录、日志或第三方脚本窃取。
- POST:参数在请求Body中,虽然仍可能被抓包,但不会直接暴露在URL栏或日志