Linux -- HTTP 请求 与 响应 报文

目录

请求报文:

请求方法

响应报文:

[状态码 与 状态码描述](#状态码 与 状态码描述)

共性

常见的报头


请求报文:

请求方法

|----------|-------------|
| 方法 | 说明 |
| GET | 获取资源 |
| POST | 传输实体主体 |
| PUT | 传输文件 |
| HEAD | 获得报文首部 |
| DELETE | 删除文件 |
| OPTIONS | 询问支持的方法 |
| TRACE | 追踪路径 |
| CONNECT | 要求用隧道协议连接代理 |
| LINK | 建立和资源之间的联系 |
| UNLINK | 断开连接关系 |

响应报文:

如果服务器返回了一个 html 页面, 那么html 页面内容就是在 响应正文中.

状态码 与 状态码描述

|---------------------------------|---------|-----------------------|---------------------------------|
| 分类 | 状态码 | 含义 | 解释 |
| 信息性响应 (1xx):请求已被接收,继续处理。 | 100 | Continue | 初步请求已被接受,客户应当继续发送请求的剩余部分。 |
| 信息性响应 (1xx):请求已被接收,继续处理。 | 101 | Switching Protocols | 服务器已经理解了客户端的请求,并将通过升级协议的方式继续处理。 |
| 成功响应 (2xx):动作已成功完成。 | 200 | OK | 请求成功,所请求的响应头或数据体将随此响应返回。 |
| 成功响应 (2xx):动作已成功完成。 | 201 | Created | 请求成功并且服务器创建了新的资源。 |
| 成功响应 (2xx):动作已成功完成。 | 204 | No Content | 请求成功但服务器没有需要返回的内容。 |
| 重定向响应 (3xx):需要进一步操作以完成请求。 | 301 | Moved Permanently | 请求的网页已永久移动到新位置。 |
| 重定向响应 (3xx):需要进一步操作以完成请求。 | 302 | Found | 请求的网页临时从不同的URL响应。 |
| 重定向响应 (3xx):需要进一步操作以完成请求。 | 304 | Not Modified | 自从上次请求后,请求的网页未被修改过。 |
| 客户端错误 (4xx):请求包含语法错误或者无法完成。 | 400 | Bad Request | 服务器无法处理由于客户端请求语法错误而导致的请求。 |
| 客户端错误 (4xx):请求包含语法错误或者无法完成。 | 401 | Unauthorized | 请求要求用户的身份认证。 |
| 客户端错误 (4xx):请求包含语法错误或者无法完成。 | 403 | Forbidden | 即使提供身份验证凭据,服务器也拒绝处理请求。 |
| 客户端错误 (4xx):请求包含语法错误或者无法完成。 | 404 | Not Found | 服务器找不到请求的网页。 |
| 服务器错误 (5xx):服务器未能完成明显有效的请求。 | 500 | Internal Server Error | 服务器遇到了一个未曾预料的情况,导致了它无法完成对请求的处理。 |
| 服务器错误 (5xx):服务器未能完成明显有效的请求。 | 501 | Not Implemented | 服务器不支持当前请求所需要的某个功能。 |
| 服务器错误 (5xx):服务器未能完成明显有效的请求。 | 502 | Bad Gateway | 服务器作为网关或代理,从上游服务器收到无效响应。 |
| 服务器错误 (5xx):服务器未能完成明显有效的请求。 | 503 | Service Unavailable | 服务器暂时无法处理请求,可能因为过载或维护。 |

共性

怎么分离报头和有效载荷?

空行可以保证在读取报头时,把报头读完。
怎么判断已经把正文读完?

在报头中,会记录正文的长度 Content-Length,在读取正文时,根据正文长度来判断是否已经把正文读完了。如果报文中没有正文,则不会出现该字段。
为什么需要 HTTP 版本?

一个应用会存在新老版本并存的情况,在更新新版本时,不仅客户端需要更新,服务器也需要更新,如果服务器都更新成新版本,但有的客户端还停留在旧版本,那么服务器给客户端提供服务时,也就是服务器和客户端在进行网络通信时,通信可能会出现问题,比如旧版本的客户端不支持新功能。为了确保客户端和服务器之间能够正确地通信,需要在HTTP报文中携带版本号,有了 HTTP 版本后,新版本的客户端就和新版本的服务器匹配,老版本的客户端就和老版本的服务器匹配。

常见的报头

|----------------|-----------------------------------------------------------------|
| Content-Type | 数据类型,常见的值包括 text/htmlapplication/jsonapplication/xml 等。 |
| Content-Length | 正文的长度 |
| Host | 客户端告知服务器,所请求的资源在哪个主机的哪个端口上 |
| User-Agent | 声明用户的操作系统和浏览器版本信息 |
| referer | 当前页面是从哪个页面跳转来的 |
| Location | 搭配 3XX 状态码使用,告诉客户端接下来要去哪里访问 |
| Cookie | 用于在客户端存储少量信息,通常用于实现会话(session)的功能 |

相关推荐
仓鼠OO1 小时前
思科交换机telnet配置案例
网络·思科·远程
Andya_net1 小时前
网络安全 | F5-Attack Signatures-Set详解
网络·数据库·web安全
Zfox_3 小时前
HTTP cookie 与 session
linux·服务器·网络·c++·网络协议·http
qq_3927944810 小时前
为什么 TCP 挥手需要有 TIME_WAIT 状态?
网络·网络协议·tcp/ip
闲猫12 小时前
正向代理(动态 IP 代理)和反向代理
网络·网络协议·tcp/ip
一尘之中12 小时前
IPoIB(IP over InfiniBand)数据接收与发送机制详解
网络·tcp/ip·php
hvinsion12 小时前
Python 轻松扫描,快速检测:高效IP网段扫描工具全解析
网络·python·tcp/ip
WTT001114 小时前
C语言中危险函数
大数据·c语言·开发语言·网络·算法·渗透测试·we安全
这猪好帅18 小时前
【Linux网络编程】数据链路层--以太网协议
linux·服务器·网络
xianwu54320 小时前
反向代理模块1
开发语言·网络·数据库·c++·mysql