我正在用 C++ 编写一个 Amazon S3 客户端库,使用boost::asio
和组合HEAD
以及GET
请求来查询和下载文件。HEAD
在我发送对存储桶中不存在的对象的请求之前,一切正常。对不存在的对象的GET
请求会返回带有 404 状态代码的礼貌响应标头(正如预期的那样!),但HEAD
对同一对象的请求绝对不会返回任何内容!(当我的代码抛出异常试图从响应中读取标头并且没有任何内容可读取时,我发现了这一点。)
我正在关注文档和各种示例,包括这个......
http://docs.aws.amazon.com/AmazonS3/latest/dev/RetMetaOfObjVersion.html
我的请求看起来像这样......
HEAD /does_not_exist.txt HTTP/1.1
Host: my_bucket.s3.amazonaws.com
Date: Wed, 30 Oct 2013 22:32:00 GMT
Authorization: AWS MY_KEY:...ETC...
Connection: close
最奇怪的是,对于有效文件HEAD
和GET
请求,一切都有效,并且GET
适用于不存在的文件(正确返回报告错误代码的标头),但我绝对没有响应(0 字节!)对HEAD
非- 存在的文件。我在网上没有发现任何人报告任何类似的问题。我是唯一一个?
- - 更新 - -
我发现当我的代码在我的办公室防火墙之外执行时,一切正常:对HEAD
不存在文件的请求返回漂亮的 HTTP 标头,指示 404 结果。现在来调查我的防火墙对我做了什么...... :(