我已经在AWS开发者论坛中提出了这个问题而没有得到任何回复。所以这里:
我使用自己的libCurl C ++应用程序从自己的AWS S3存储桶下载自己的媒体文件。
如果我将文件标记为公共文件并使用简单的libCurl GET请求(没有其他标题)下载它,则下载的文件可以正常工作。 但是,如果我将完全相同的文件标记为private并将标头添加到GET请求(Host,x-amz-date,x-amz-content-sha256和Authorization Header),则无法打开下载的文件。
我的问题是: 为什么在GET请求中添加标题会改变下载的文件? 我该怎么做才能解决这个问题?
更新:我发现使用十六进制编辑器,HTTP响应在开头写入接收文件。 我该如何防止这种情况?
提前致谢!
答案 0 :(得分:0)
我找到了解决方案。只需从我的代码中删除此行:
curl_easy_setopt(curl, CURLOPT_HEADER, true);
最初,我认为这一行允许我在HTTP请求中添加额外的标头... 相反,它在输出中包含HTTP响应,这是我的问题。