使用 libCurl + headers 下载 AWS S3 后无法打开自己的媒体文件

Cannot open own media files after AWS S3 download with libCurl + headers

我已经在 AWS 开发人员论坛上问过这个问题,但没有得到任何回复。所以这里是:

我使用我自己的 libCurl C++ 应用程序从我自己的 AWS S3 存储桶下载我自己的媒体文件。

如果我将一个文件标记为 public 并使用简单的 libCurl GET 请求下载它(没有额外的 headers),下载的文件工作得很好。 但是,如果我将完全相同的文件标记为私有并将 headers 添加到 GET 请求(主机、x-amz-date、x-amz-content-sha256 和授权 Header),我不能打开下载的文件。

我的问题是: 为什么在 GET 请求中添加 headers 会改变下载的文件? 我该怎么做才能解决这个问题?

更新:使用十六进制编辑器我发现,HTTP 响应在开头写入接收到的文件。 我怎样才能防止这种情况发生?

提前致谢!

我找到了解决方案。只需从我的代码中删除这一行:

curl_easy_setopt(curl, CURLOPT_HEADER, true);

最初,我认为这一行可以让我向我的 HTTP 请求添加额外的 headers... 相反,它在输出中包含 HTTP 响应,这是我的问题。