K.Maebashi's BBS 削除ページ

以下の投稿を削除します。

[2241] Re:P.17:終了のマークとして0を送付について
返信
投稿者:(ぱ)こと管理人
2020/10/20 23:13:34

>大分時間が経ってしまいましたが、回答は理解できました。 おひさしぶりです。反応が遅くなりましてすみません。 >一方で、Server側をApacheに置き換えたとき、Clientからの送信終了を表す”0”は >不要になっています(P.27)。Apacheは何をもってClientがリクエストを送り終えたことを >判断しているのでしょうか? TcpServer.javaのような手抜きプログラムとは違い、ApacheはまともなWebサーバなので、 HTTPリクエストを解釈できます。HTTPリクエストは、p.24のリスト1-7にあるとおり、 GETの場合は(普通は)ボディはつかないので空行で終わります。よって、 空行でリクエストの終わりを判定することができます。この本で作っている 簡易WebサーバModoki01.java(リスト1-16)では、実際そのようにしてリクエストの 終わりを判定しています(59行目)。 POSTの場合はボディが付くので、Content-Lengthヘッダのサイズを使います。 この本ではリスト3-17の66行目でContent-Lengthを取得し、69行目のreadToSize()の 呼び出しでそのサイズだけ読み込んでいます。 ――というのは実はHTTP1.0相当の、簡易版の実装で、HTTP1.1では サーバはGETメソッドでもボディを受け取ることが可能でなければならず(そして 無視しなければならず)、POSTメソッドでもContent-Lengthは必須ではありません。 動的にデータを作りながら連続して送るとき、ヘッダの時点ではサイズを確定できない、 という事情があるわけですが、それを受け取るのは本書の(かつ私の能力の)範囲を 越えます。 興味があれば以下を参照ください(RFC2616なので微妙に古いですが問題ないでしょう)。 https://triple-underscore.github.io/rfc-others/RFC2616-ja.html#section-4.4
パスワード:

管理者削除