2. 様々なメソッドを使用してみる

様々なメソッドを試してみます.

ヘッダ情報だけを得る

HEADメソッドを用いることで,ヘッダ情報だけを得ることができる.
  1. まず,ウェブサーバに接続しよう.
    (打ち込む文字列→) openssl s_client -crlf -quiet -connect lecture.ecc.u-tokyo.ac.jp:443
    ※実際にキー入力する代わりにキーボードの「↑」キーを押すことで, ターミナル上で入力したコマンド履歴を呼び出して前回と同じコマンド実行できる.
    「return」を押すと,接続したサーバの認証情報が表示される.
  2. HEADメソッドを使ってみよう.
    (打ち込む文字列→) HEAD /johzu/joho/Data/Protocol/sample.html HTTP/1.1

    「return」を押したら,さらにホストの指定をする.
    (打ち込む文字列→)  Host: lecture.ecc.u-tokyo.ac.jp

    打ち込んだ後に「return」を2度押す.

試しに lecture.ecc.u-tokyo.ac.jp のトップページのヘッダ情報を取得してみよう.
  1. まず,ウェブサーバに接続する.
    (打ち込む文字列→) openssl s_client -crlf -quiet -connect lecture.ecc.u-tokyo.ac.jp:443
    「return」を押すと,接続したサーバの認証情報が表示される.
  2. HEADメソッドでトップページ「/」を指定する.
    (打ち込む文字列→) HEAD / HTTP/1.1
    「return」を押したら,さらにホストの指定をする.
    (打ち込む文字列→) Host: lecture.ecc.u-tokyo.ac.jp

    最後に「return」を2度押す.

    最終更新日時(Last-Modified:)やデータサイズ(Content-Length:)などが違うことがわかる.

どのようなメソッドが使えるかを知る

OPTIONSというメソッドを用いることで,使用可能なメソッドを調べられる.
  1. まず,ウェブサーバに接続しよう.
    (打ち込む文字列→) openssl s_client -crlf -quiet -connect lecture.ecc.u-tokyo.ac.jp:443
    「return」を押すと,接続したサーバの認証情報が表示される.
  2. OPTIONSメソッドを使う.
    OPTIONSメソッドを用いる.ここでは仮にトップページを指定する.
    (打ち込む文字列→) OPTIONS / HTTP/1.1
    「return」を押したら,さらにホストの指定をする.
    (打ち込む文字列→) Host: lecture.ecc.u-tokyo.ac.jp
    最後に「return」を2度押す.

    GET,HEAD,POST,OPTIONS という4つのメソッドが利用できることがわかる.

不適切な要求をした場合

HTTP/1.1 での要求は「メソッド名 パス名 HTTP/1.1」という形式をしている. 利用可能なメソッドを問い合わせるOPTIONSメソッドでは, パス名がなくても良さそうに思われるが,実際に省略すると形式違反となってしまう.
  1. まず,ウェブサーバに接続しよう.
    (打ち込む文字列→) openssl s_client -crlf -quiet -connect lecture.ecc.u-tokyo.ac.jp:443
    「return」を押すと,接続したサーバの認証情報が表示される.
  2. OPTIONSメソッドを使う.
    パス名を省略してOPTIONSメソッドを用いてみる.
    (打ち込む文字列→) OPTIONS HTTP/1.1
    ここで「return」を押すと,次のように「不適切な要求(400 Bad Request)」と返される.

存在しないファイルを指定した場合

存在しないファイルを指定した場合,どのような応答が返ってくるだろうか.
  1. まず,ウェブサーバに接続しよう.
    (打ち込む文字列→) openssl s_client -crlf -quiet -connect lecture.ecc.u-tokyo.ac.jp:443
    「return」を押すと,接続したサーバの認証情報が表示される.
  2. GETメソッドを使う.
    存在しないファイルについてGETメソッドを用いる. ここでは実際には存在しないファイルのパス名「/nofile.html」を指定する.
    (打ち込む文字列→) GET /nofile.html HTTP/1.1
    「return」を押したら,さらにホストの指定をする.
    (打ち込む文字列→) Host: lecture.ecc.u-tokyo.ac.jp
    最後に「return」を2度押す.

    指定したファイルが存在しない(404 Not Found)と応答している. /nofile.html以外にも適当なありそうもないファイル名を指定してみよう.
  3. ブラウザで存在しないファイルを指定してみよう
    https://lecture.ecc.u-tokyo.ac.jp/nofile.htmlをブラウザで見てみよう.

存在しないメソッドを指定した場合

存在しないメソッドを指定した場合,どのような応答が返ってくるだろうか.
  1. まず,ウェブサーバに接続しよう.
    (打ち込む文字列→) openssl s_client -crlf -quiet -connect lecture.ecc.u-tokyo.ac.jp:443
    「return」を押すと,接続したサーバの認証情報が表示される.
  2. 存在しないメソッドを使う.
    存在しないメソッドとして,NOMETHODを指定してみる. パス名にはトップページ「/」を指定する.
    (打ち込む文字列→) NOMETHOD / HTTP/1.1
    「return」を押したら,さらにホストの指定をする.
    (打ち込む文字列→) Host: lecture.ecc.u-tokyo.ac.jp
    最後に「return」を2度押す.

    存在しないファイルを指定したときとは異なり, メソッドが利用できない(501 Method Not Implemented)と応答している. NOMETHOD以外にも存在しないメソッド名を指定してみよう.
エラーの場合にも,エラーの種類毎に異なる応答を返す「きまり」になっているのが確認できただろうか.