Linux:应用层协议HTTP
HTTP协议
认识URL
HTTP协议请求与响应格式
HTTP请求
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
HTTP响应
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 238765
Date: Mon, 21 Oct 2024 02:00:00 GMT
Server: BWS/1.0<!DOCTYPE html>
<html>
<head><title>百度一下,你就知道</title>... (这里是完整的百度首页HTML代码)
</head>
<body>... (页面内容)
</body>
</html>
HTTP方法
HTTP常见方法
HTTP的状态码
分类 | 状态码 | 状态文本 | 含义 | 应用场景或解释 |
---|---|---|---|---|
信息响应 | 100 | Continue | 继续 | 客户端应继续其请求。常用于在发送大请求体前,确认服务器是否愿意接收。 |
(1xx) | 101 | Switching Protocols | 切换协议 | 服务器应客户端请求,正在切换协议(如从 HTTP 升级到 WebSocket)。 |
102 | Processing | 处理中 | 服务器已收到请求,但处理过程尚未完成,防止客户端超时。 | |
成功 | 200 | OK | 请求成功 | 标准成功响应。GET 请求返回资源,POST 请求返回操作结果。 |
(2xx) | 201 | Created | 已创建 | 请求成功,并在服务器创建了新的资源(如 POST 创建新文章)。 |
202 | Accepted | 已接受 | 请求已接受,但处理尚未完成。适用于异步任务。 | |
204 | No Content | 无内容 | 服务器成功处理请求,但不需要返回任何内容(如 DELETE 请求)。 | |
重定向 | 301 | Moved Permanently | 永久移动 | 请求的资源已被永久移动到新 URL。搜索引擎会更新链接。 |
(3xx) | 302 | Found | 临时移动 | 请求的资源被临时移动到新 URL。搜索引擎不会记录新链接。 |
304 | Not Modified | 未修改 | 所请求的资源自上次请求后未更改,客户端可直接用缓存。 | |
307 | Temporary Redirect | 临时重定向 | 与 302 类似,但保证重定向时请求方法和体不会改变。 | |
308 | Permanent Redirect | 永久重定向 | 与 301 类似,但保证重定向时请求方法和体不会改变。 | |
客户端错误 | 400 | Bad Request | 错误请求 | 服务器因客户端错误(如语法错误)无法理解请求。 |
(4xx) | 401 | Unauthorized | 未认证 | 请求需要身份验证。客户端需提供有效的身份凭证(如登录)。 |
403 | Forbidden | 禁止访问 | 服务器理解请求,但拒绝执行(已认证,但权限不足)。 | |
404 | Not Found | 未找到 | 服务器找不到请求的资源。 | |
服务器错误 | 500 | Internal Server Error | 内部服务器错误 | 服务器遇到意外情况,无法完成请求(通常是服务器端代码 Bug)。 |
(5xx) | 501 | Not Implemented | 未实现 | 服务器不支持完成请求所需的功能。 |
502 | Bad Gateway | 错误网关 | 作为网关或代理的服务器,从上游服务器收到了无效响应。 | |
503 | Service Unavailable | 服务不可用 | 服务器暂时过载或正在维护,无法处理请求。 |
状态码 | 状态文本 | 是否为临时重定向? | 应用样例与关键区别 |
---|---|---|---|
301 | Moved Permanently | 否(永久重定向) | 网站更换域名。旧域名所有请求应使用301跳转到新域名。 |
302 | Found | 是(临时重定向) | 用户登录成功后,临时重定向到首页。 |
307 | Temporary Redirect | 是(临时重定向) | 需要确保客户端在重定向时,原请求方法和报文体不变的场景。 |
308 | Permanent Redirect | 否(永久重定向) | 需要确保客户端在重定向时,原请求方法和报文体不变的场景。 |
HTTP/1.1 301 Moved Permanently\r\n
Location: https://www.new-url.com\r\n
HTTP/1.1 302 Found\r\n
Location: https://www.new-url.com\r\n
HTTP常见Header
- Content-Type: 数据类型(text/html等)
- Content-Length: Body的⻓度
- Host: 客⼾端告知服务器, 所请求的资源是在哪个主机的哪个端⼝上;
- User-Agent: 声明⽤⼾的操作系统和浏览器版本信息;
- Referer: 当前页⾯是从哪个页⾯跳转过来的;
- Location: 搭配3xx状态码使⽤, 告诉客⼾端接下来要去哪⾥访问;
- Cookie: ⽤于在客⼾端存储少量信息. 通常⽤于实现会话(session)的功能;