2010/08/31
HTTPのフッター?
飯田さんの書いたコードがApache CommonsのHttpClientを使っていました。下記サイトを見ると、今はApache Commonsから独立してHttpComponentsになっています。
HttpClientにgetResponseFooterというメソッドがありました。これは何でしょうか。
結論を言うと、レスポンスの転送形式がChunked Transfer Codingの時、チャンクの最後にtrailerと呼ばれるレスポンスヘッダを送ることができます。これをHttpClientのAPIはFooterと呼んでいます。
RFC2616(http://www.ietf.org/rfc/rfc2616.txt)で、該当するのは「3.6.1 Chunked Transfer Coding」の以下の部分です。
The trailer allows the sender to include additional HTTP header fields at the end of the message. The Trailer header field can be used to indicate which header fields are included in a trailer (see section 14.40).
14.40を見ると、チャンクの後ろにtrailerでレスポンスヘッダを返す場合は、事前にTrailerヘッダでどんなヘッダがtrailerに載るか指定しろと書いてあります。たとえばCache-Controlヘッダをtrailerで返したければ、Trailer:Cache-Controlのヘッダを指定します。なお次の3つはtrailerで返せません。
- Transfer-Encoding
- Content-Length
- Trailer
後継のHttpComponentsのHttpClientのAPIを見るとgetResponseFooterはなくなっています。ChunkDecoderクラスにgetFootersメソッドが残っていますが。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/http-footer/tbping