2015/06/24

HTTP 100-continue

いまお仕事でCephを触る機会をもらっている。検証環境の構築はこれからだけど、ドキュメントに目を通してたらApacheやらFastCGIのところで"100-continue"なる単語が見受けられる。




you must install the Ceph Object Gateway daemon. The Ceph Object Gateway supports 100-continue, but you must install Ceph builds of Apache and FastCGI for 100-continue support.




そっこうぐぐる。tkuroさんのブログに詳細があった。HTTP/1.1のリクエストの仕様なんですね。

WebRequestのExpectにデフォルトで100-continueがつく件 - 初学者の箸置

通常、HTTPリクエストはヘッダ+ボディをセットでサーバへ送る。そのリクエスト内容について、サーバ側で何らかの(400系の)エラーがあった場合、その旨をクライアントへ返す。HTTP 100-continueでは、「リクエストがエラーになるなら、ボディ送る時間が無駄だよね。じゃあ先にヘッダ情報だけ送って確認してもらおう。もし受け付けてもらえるんだったら、その時にボディを送りましょう。」という方針でHTTP通信を行う。つまり今までセットで送っていたヘッダとボディを分け、効率化しようということ。

クライアントはとりあえずヘッダ情報だけ送って、まずは返ってくるステータスコードを調べる。100系なら続けてボディ送信、400系なら送信やめる、といった具合。

ただし、注意すべきは




問題なのはこの 100-continueに対応してないサーバ(HTTP接続な認証サーバとか)がいるという事なのですね。この場合要求された時点で 417 を返してきます。




というわけで、Cephで扱うApacheFastCGIはこれに対応しているらしい。



0 件のコメント:

コメントを投稿