HTTP/1.1で接続するクライアントを製作しています。HTTP/1.0 なら経験があるのですが、1.1に対応するというのは、具体的にどんな処理を追加する必要があるでしょうか?

ざっと調べた感じでは、
1、デフォルトで持続的接続が有効になる
2、chunkedエンコーディングのデコードを実装する必要がある
3、リクエストに Host: ヘッダが必須
これくらいでしょうか?
また、リクエストに Connection: closeと書けば1を無効にしてくれるようですが、chunkedしないようにヘッダ等で指示することは可能でしょうか?
RFC読めってのは勘弁してください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:kddi No.1

回答回数277ベストアンサー獲得回数2

ポイント50pt

HTTP1.1での動作はその3点でほぼ合っております。

しかし、

Connection: closeが有効になるのはレスポンスヘッダに記述された場合になります。この時はHTTP1.0の普通のレスポンスを受信した時と同様の動作になります。

逆を言えばヘッダにその記述が無い場合はデフォルトではkeep-aliveする必要があります。


リクエスト時にチャンク形式のレスポンスを受信しないようにするには、1.0にする、しか方法はありません。

HTTP/1.1アプリケーションはチャンク形式のデコードができなければいけません。チャンク形式エンコーディングは HTTP/1.1 の技術なので通信相手が HTTP/1.0 以下である場合は使用できません。

id:tebukuro

ありがとうございます。RFCでもチャンク形式のデコードはHTTP/1.1である以上必須というような記述があるので、なんとか実装しないといけないようですが、必ずしもchunkedで返ってくるとは限らないようなので、現物合わせでchunkedを返さない方法は無いかなぁと思っております。

もうちょと回答うけつけてみます。

2006/03/08 22:18:02
  • id:hiratara
    > Connection: closeが有効になるのはレスポンスヘッダに記述された場合になります。

    リクエストに含んでもいいのでは?

    > in either the request or the response header fields indicates
    > that the connection SHOULD NOT be considered `persistent'

    http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.10

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません