下载整个文件后,为什么S3有时会返回HTTP 206?

时间:2018-12-19 02:49:24

标签: amazon-s3

我有一段时间使用Server Access Log Format将S3存储桶登录到另一个存储桶。对于操作:REST.GET.OBJECT有时会返回HTTP Status: 206 Partial Content,因为未下载整个文件。但是我可以在日志中看到有时返回HTTP Status:206时会下载整个文件。我删除了一些字段以使其更简单:

  • 操作:REST.GET.OBJECT
  • 请求URI:“获取[文件] HTTP / 1.1”
  • HTTP状态:206
  • 错误代码:-
  • 发送的字节数:76431360
  • 对象大小:76431360
  • 总时间:16276
  • 转机时间:190

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

1 个答案:

答案 0 :(得分:2)

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

相反,状态码206的实际含义是同时发生以下三件事:

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

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