我对 Content-Encoding 和 Transfer-Encoding 的使用有疑问:
请让我知道我的以下理解是否正确:
客户端在其请求中可以使用 accept-encoding 标头指定它愿意接受哪些编码类型。因此,如果服务器希望在传输之前对消息进行编码,例如。gzip,它可以压缩实体(内容)并添加内容编码:gzip 并通过 HTTP 响应发送。在接收时,客户端可以接收并解压缩和解析实体。
在传输编码的情况下,客户端可以指定它愿意接受哪种编码并即时执行其操作。即如果客户端发送一个 TE: gzip; q=1,这意味着如果服务器愿意,它可以使用 Transfer-Encoding: gzip 发送 200 OK 并且当它尝试发送流时,它可以压缩和发送,客户端在接收到内容后,可以即时解压缩和执行其解析。
我的理解到此为止吗?请给出意见。
另外,动态压缩实体与先压缩实体然后再传输的基本优势是什么?传输编码是否仅对分块响应有效,因为我们在传输前不知道实体的大小?
我有一个问题,当HEAD被发送到资源并且服务器决定执行分块编码时,HTTP Server响应如何?
如果服务器总是希望对特定资源上的GET执行分块编码,因为它在生成响应时不知道确切的内容长度,那么当在同一资源上发送HEAD时,服务器应该如何表现.
我对HTTP连接关闭有两个疑问:
如果客户端通过HTTP服务器附近的Connection:发送HTTP请求,是在客户端收到响应后发送TCP FIN的HTTP服务器还是客户端职责?
如果客户端发送了格式错误的HTTP请求,而服务器发送了400 BAD REQUEST,则最佳做法是按服务器关闭连接(即使HTTP请求具有连接:keep-alive)还是保持连接的良好做法还在活跃吗?
在此先感谢您回答我的问题?