说一下 HTTP 的报文结构?

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

HTTP 请求报文

HTTP 请求报文的格式如下:

GET / HTTP/1.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
Accept: */*

HTTP 请求报文的第一行叫做请求行,后面的行叫做首部行,首部行后还可以跟一个实体主体。请求首部之后有一个空行,这个空行不能省略,它用来划分首部与实体。

请求行包含三个字段:

  • 方法字段:包括 POST、GET 等请方法。
  • URL 字段
  • HTTP 版本字段。

HTTP 响应报文

HTTP 响应报文的格式如下:

HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 137582
Expires: Thu, 05 Dec 1997 16:00:00 GMT
Last-Modified: Wed, 5 August 1996 15:55:28 GMT
Server: Apache 0.84
<html>
  <body>Hello World</body>
</html>

HTTP响应报文的第一行被称为状态行,其后是首部行,最后是实体主体

  • 状态行包含三个字段:协议版本字段、状态码和相应的状态信息。
  • 实体主体是报文的主要部分,包含了所请求的对象的具体内容。
  • 首部行可以分为四种类型:请求首部、响应首部、通用首部和实体首部。通用首部和实体首部可以在请求报文和响应报文中设置,而请求首部和响应首部有所区别。
  • 常见的请求首部包括:Accept(可接受的媒体资源类型)、Accept-Charset(可接受的字符集)、Host(请求的主机名)等。
  • 常见的响应首部包括:ETag(资源的匹配信息)、Location(客户端重定向的URI)等。
  • 常见的通用首部包括:Cache-Control(控制缓存策略)、Connection(管理持久连接)等。
  • 常见的实体首部包括:Content-Length(实体主体的大小)、Expires(实体主体的过期时间)、Last-Modified(资源的最后修改时间)等。

标签: java, Java面试题, 操作系统, Java问题合集, Java编程, Java问题精选, Java常见问题, 操作系统面试题