私は 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
機能し、存在しないファイルに対して機能することです(エラーコードを報告するヘッダーを正しく返します)がHEAD
、非-既存のファイル。Web 上で同様の問題を報告している人を見つけたことがありません。私だけですか?
- - アップデート - -
私のコードがオフィスのファイアウォールの外側で実行されると、すべてが正しく動作することがわかりましたHEAD
。存在しないファイルに対する要求は、404 の結果を示す適切な HTTP ヘッダーを返します。今、私のファイアウォールが私に何をしているのかを調査するために... :(