📅  最后修改于: 2023-12-03 14:42:01.370000             🧑  作者: Mango
HTTP实体是HTTP报文中携带的数据部分,也就是请求报文和响应报文中的主体部分。
每个实体都可以具有自己的头部,实体头部包含了关于实体的元数据信息。常见的实体头部包括:
Content-Type
:指定实体数据的MIME类型,如text/html
、application/json
等。Content-Length
:指定实体数据的字节数。Content-Encoding
:指定实体数据的压缩格式,如gzip
、deflate
等。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都支持压缩机制,常用的压缩格式有gzip
和deflate
。
客户端在请求头部中使用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>
上面的请求报文中,客户端指定支持gzip
和deflate
压缩格式;响应报文中,服务器将数据压缩为gzip
格式返回。