📜  HTTP实体(1)

📅  最后修改于: 2023-12-03 14:42:01.370000             🧑  作者: Mango

HTTP实体

HTTP实体是HTTP报文中携带的数据部分,也就是请求报文和响应报文中的主体部分。

实体头部

每个实体都可以具有自己的头部,实体头部包含了关于实体的元数据信息。常见的实体头部包括:

  • Content-Type:指定实体数据的MIME类型,如text/htmlapplication/json等。
  • Content-Length:指定实体数据的字节数。
  • Content-Encoding:指定实体数据的压缩格式,如gzipdeflate等。
  • Last-Modified:指定实体数据的最后修改时间。
请求实体

在使用HTTP进行POST、PUT等操作时,需要在请求报文中携带实体数据。例如,上传一个文件需要将文件数据放到请求实体中。

POST /upload HTTP/1.1
Host: example.com
Content-Type: application/octet-stream
Content-Length: 1024

<binary data>

上面的请求报文中,请求实体的MIME类型为application/octet-stream,长度为1024字节。

响应实体

在HTTP响应中,服务器会将响应数据放在响应实体中返回给客户端。例如,响应一个HTML页面需要将HTML代码放到实体中。

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1274

<!DOCTYPE html>
<html>
<head>
<title>Example</title>
</head>
<body>
<h1>Hello, world!</h1>
</body>
</html>

上面的响应报文中,响应实体的MIME类型为text/html,长度为1274字节。

实体压缩

由于HTTP实体数据可能非常大,为了节省网络带宽,可以对实体数据进行压缩。HTTP/1.1和HTTP/2都支持压缩机制,常用的压缩格式有gzipdeflate

客户端在请求头部中使用Accept-Encoding字段指定支持的压缩格式,服务器在响应头部中使用Content-Encoding字段指定压缩格式。例如:

GET /example HTTP/1.1
Host: example.com
Accept-Encoding: gzip, deflate

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Encoding: gzip
Content-Length: 256

<gzip compressed data>

上面的请求报文中,客户端指定支持gzipdeflate压缩格式;响应报文中,服务器将数据压缩为gzip格式返回。