パスワードを忘れた? アカウント作成
162157 journal

Livingdeadの日記: HTTP/0.9にハマル 1

日記 by Livingdead

ライブドア・データホテル・パトロールというサービスを使っている.これはなかなかのすぐれもので,ウェブサーバの監視をはじめ証明書の期限切れ検知などにも使えるのだが,最近lighttpdを使っているウェブサービスの死活監視に使ってみてHTTP/0.9のリクエストになっているのかなと思った.

というのはlighttpdにtelnetで接続して「GET / 」と打つと400 Bad Requestになるのだが,データホテル・パトロールでも確かに400を検出して異常が検知されたことになる.実際にウェブブラウザで閲覧してみると問題無い.「GET / HTTP/1.0」とすると200でページを取得することができる.おそらく世の中で使われているのはサーバ,ブラウザ共にHTTP/1.1対応のものがほとんどで,自分も気にしてなかったのだが,GET / 等というリクエストはどの頃からダメ扱いになったのかなと思って調べてみた.で,結局単に HTTP/0.9 では不要,HTTP/1.0 以降では必須というだけのことらしい.こんなことすら知らずにウェブサービスをしていたとは…

5. Request

      A request message from a client to a server includes, within the
      first line of that message, the method to be applied to the resource,
      the identifier of the resource, and the protocol version in use. For
      backwards compatibility with the more limited HTTP/0.9 protocol,
      there are two valid formats for an HTTP request:

              Request = Simple-Request | Full-Request

              Simple-Request = "GET" SP Request-URI CRLF

              Full-Request = Request-Line ; Section 5.1
                                                *( General-Header ; Section 4.3
                                                  | Request-Header ; Section 5.2
                                                  | Entity-Header ) ; Section 7.1
                                                CRLF
                                                [ Entity-Body ] ; Section 7.2

      If an HTTP/1.0 server receives a Simple-Request, it must respond with
      an HTTP/0.9 Simple-Response. An HTTP/1.0 client capable of receiving
      a Full-Response should never generate a Simple-Request.

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by elderwand (34630) on 2009年11月09日 21時07分 (#1668620) 日記

    lighttpd は使った事がないので、ナニですが。

    If an HTTP/1.0 server receives a Simple-Request, it must respond with
                an HTTP/0.9 Simple-Response.

    てことは、GET / に対して / のコンテンツを返さないといけないわけですが、lighttpd では、エラーにしちゃうんですね。ちなみに Apache だと、


    GET /
    <html><body><h1>It works!</h1></body></html>

    #大文字のMUSTじゃないから、どうでもいいってか。

typodupeerror

192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり

読み込み中...