🚀 大家好,我是小康。

今天给大家分享一个 HTTP 面试题 :说一下HTTP的报文结构?

小技巧:在面试中,可以参考下面的示例回答,这样回答简洁明了。详细介绍部分则是为了帮助大家系统学习,以便应对面试官深入提问。

示例回答:

HTTP 报文包括起始行、头部字段、空行和消息主体。请求报文的起始行是请求行,响应报文的起始行为状态行。头部字段提供元数据,消息主体承载实际数据。


详细解释

HTTP报文有两种,分别是HTTP请求报文和HTTP响应报文:

HTTP 请求报文结构

1、请求行

  • 方法:表示请求类型,如 GET、POST、PUT、DELETE 等。
  • URL:请求资源的地址。
  • HTTP 版本:协议版本,如 HTTP/1.1。

示例

1
GET /index.html HTTP/1.1

2、请求头部字段

  • 头部字段名称:头部字段提供请求的元数据,如 Host、User-Agent、Accept 等。

示例

1
2
3
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

3、空行:空行用于分隔头部和消息主体。
4、消息主体(可选):包含实际的数据,如 POST 请求中的表单数据。
示例(带消息主体的 POST 请求):

1
2
3
4
5
6
7
8
9
10
#请求行
POST /submit-form HTTP/1.1
# 请求头部字段
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
# 空行

# 消息主体
name=JohnDoe&age=25

HTTP 响应报文结构

1、状态行

  • HTTP 版本:协议版本,如 HTTP/1.1。
  • 状态码:表示响应结果的数字代码,如 200、404、500 等。
  • 状态描述:对状态码的简要描述。

示例

1
HTTP/1.1 200 OK

2、响应头部字段

  • 头部字段名称:头部字段提供响应的元数据,如 Content-Type、Content-Length、Set-Cookie 等。

示例

1
2
3
Content-Type: text/html
Content-Length: 1234
Set-Cookie: sessionId=abc123

3、空行:空行用于分隔头部和消息主体。
4、消息主体:包含实际的响应数据,如 HTML 文档、图片、JSON 数据等。
示例(带消息主体的响应):

1
2
3
4
5
6
7
8
9
10
11
12
13
# 状态行
HTTP/1.1 200 OK
# 响应头部字段
Content-Type: text/html
Content-Length: 1234
#空行

#消息主体
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

最后:

欢迎大家关注我的微信公众号「跟着小康学编程」!本号致力于分享C/C++/Go/Java 语言学习、计算机基础原理、Linux 编程、数据库、微服务、容器技术 等内容。文章力求通俗易懂,并配有代码示例,方便初学者理解。如果您对这些内容感兴趣,欢迎关注我的公众号「跟着小康学编程」。

后续,我还会陆续分享各个方向的编程面试题,包括C/C++、Java、Go,以及操作系统、计算机网络、数据结构、数据库和微服务等领域,为大家的面试提供帮助。

此外,小康最近创建了一个技术交流群,专门用来讨论技术问题和解答读者的疑问。在阅读文章时,如果有不理解的知识点,欢迎大家加入交流群提问。我会尽力为大家解答。期待与大家共同进步!