0

以下の get コマンドを使用して test.pdf ファイルをダウンロードできます。マイクロコントローラーがサーバーと通信するために C で記述したコードを使用します。

GET /TestFolder/test.pdf HTTP/1.1\r\n ホスト: www.xyz.com\r\n\r\n ファイル: test.pdf は、ホスト: xyz.com のフォルダー: TestFolder にあります。

Amazon S3 でプログラムをテストしたかったのです。アカウントを作成してデータをアップロードし、ファイルとフォルダーを公開し、S3 バケットにポリシーを追加してオブジェクトにアクセスできるようにしました。上記の GET コマンドを S3 ホスト s3-us-west-2.amazonaws.com に送信すると、ソケットが接続された後にエラーが発生し、サーバーの IP を取得すると、S3 からのエラー メッセージに次のように表示されます。

応答エラー: HTTP/1.1 400 Bad Request
Transfer-Encoding: chunked
Date: Mon, .. 2015 04:15:02 GMT
Connection: close
Server: AmazonS3

get コマンドから余分な \r\n を削除しようと考え、このコマンドを s3 GET /TestFolder/test.pdf HTTP/1.1\r\n Host: s3-us-west-2.amazonaws.com\r\ に送信しました。 n

今回は、リクエストは応答なしでハングします。エラーメッセージは表示されず、ソケットは通常どおり接続され、サーバーの IP が表示されます。

問題が発生している可能性のある提案や情報をいただければ幸いです。ファイルが他のサイトで公開されている場合、明らかにGETコマンドはファイルのダウンロードに機能しますが、http/1.1 GETコマンドでこの種の問題に遭遇した人はいますか? リンクを入力して、ブラウザで AWS S3 からファイルにアクセスできます。

4

1 に答える 1