首页 > 解决方案 > 为什么 S3 在下载整个文件后有时会返回 HTTP 206?

问题描述

我已经让我的 S3 存储桶使用服务器访问日志格式登录到另一个存储桶有一段时间了。对于操作:REST.GET.OBJECT 有时会返回HTTP 状态:206 部分内容,因为没有下载整个文件。但我可以在日志中看到,有时当返回 HTTP Status: 206 时,整个文件都已下载。我删除了一些字段以使其更简单:

这里发生了什么?如果发送的字节与对象大小相同,那么源如何将其报告为部分内容?

标签: amazon-s3

解决方案


206 状态与文件传输不完整无关。服务器在开始发送响应正文之前确定要发送的状态代码,因此它必须预测未来才能知道它是否能够发送整个文件。

相反,206 状态码实际上意味着以下三件事同时发生:

  • Range客户端在其请求中发送了标头;
  • 服务器决定尊重它并准确发送请求的字节,而不是整个文件;
  • 服务器实际上能够这样做 - 范围是有效且可满足的。

在这种情况下,标准要求服务器回复 206 状态码,而不是 200,无论该范围恰好覆盖整个文件还是仅覆盖文件的一部分。


推荐阅读