2016-04-10 8 views
0

GETバケット操作応答がContent-Lengthヘッダをスキップしたかどうかを知りたい。私はこれをテストし、GET BucketオペレーションのレスポンスにContent-Lengthヘッダーがないことがわかりました。バケット操作応答+ AWS S3 + Content-Lengthヘッダ

レスポンスにContent-Lengthヘッダーが含まれていない場合、応答の本文がどこで終了するのかをアプリケーションがどのように理解するのでしょうか?

リクエスト - レスポンススニペット:

GET /?max-keys=1000&prefix&delimiter=%2F HTTP/1.1 
    Date: Sat, 09 Apr 2016 18:27:23 GMT 
    x-amz-request-payer: requester 
    Authorization: AWS AKIAIP3KAUILC4GG7A2A:UG3bGvIjayrxrkxEX1mfrvETy/M= 
    Connection: Keep-Alive 
    User-Agent: Cyberduck/4.9.19632 (Mac OS X/10.10.5) (x86_64) 

    HTTP/1.1 200 OK 
    x-amz-id-2: yg76HSq5j0mi0oR6dXF8ZfGq722kHBWiMQmNvXPqiLxr1S4nGj5GVn1RVrPQrOUfNynxxaMSYEY= 
    x-amz-request-id: B4468E68E10B6AEF 
    Date: Sat, 09 Apr 2016 18:27:25 GMT 
    x-amz-bucket-region: us-east-1 
    Content-Type: application/xml 
    Server: AmazonS3 
    Connection: close 

    <?xml version="1.0" encoding="UTF-8"?> 
    <ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">......</ListBucketResult> 

ありがとう!

答えて

0

Content-Lengthヘッダーは、応答としてオプションです。実際のコンテンツの長さが表示されても反映されないことがあります。 gzipされた応答について考えてみてください。したがって、質問に答えるには:Content-Lengthが受信されない場合、クライアントはサーバーが接続を閉じるまで読み取りを続けます。

Javaでは、-1を返すまで、InputStream.read()を呼び出してください。

Is the Content-Length header required for a HTTP/1.0 response?

+0

返信ありがとうございましたYangfan。ただし、接続が閉じられるまでクライアントが読み取りを続ける場合、処理中の現在の要求の本文と次の要求のヘッダーをどのように区別することができますか?また、AWSはHTTP/1.1の使用を義務付けています。 – Rakshith

+0

私は上記の同じ接続でGETコマンドのパイプライン化を参照していました。その点をここで明確にしたかっただけです。 – Rakshith

関連する問題