u16suzuの blog

日々学んだことのメモブログです。

telnet で HTTP response header, body を確認する。

HTTP response の ボディ部分はブラウザからソースを表示することで、手軽に確認できるのですが、ヘッダ部分の確認はchromeデベロッパーツールやFirebugを使用しなければならず、少し面倒です。今回は、コマンドラインから手軽にレスポンスヘッダを確認する方法を紹介します。

まず、telnetで接続します。

# telnet google.com 80
Trying 49.212.34.191...
Connected to gihyo.jp.
Escape character is '^]'.

次に、以下のように get / http/1.0 を入力後、改行を2回エンターキーで入力します。

#get / http/1.0 <改行>
#<もう一度改行>

何故ならば、HTTP は空行を区切り文字としているためです。この2回目の改行で空行を入力することで、入力が終わったことをサーバ側に伝えているわけです。得られたレスポンスヘッダの出力例を示します。

HTTP/1.0 503 Service Unavailable
Content-Type: text/html
Content-Length: 17026
Expires: now
Pragma: no-cache
Cache-control: no-cache,no-store

ここで、 http/1.1 と 1.0ではなく 1.1で指定すると、Virtual Host(1個のサーバで複数ドメインを運用できる) のために、Hostも指定する必要があります。

#get / http/1.1
#host gihyo.jp
#<改行>

ちなみに空行を入力しないでしばらく待っていると、以下のエラーメッセージが表示されます。

Connection closed by foreign host.

ちなみに環境は Mac Linon, iTerm2です。

参考: WEB+DB PRESS vl. 68
参考: http://www.cafechantant.com/trac/wiki/telnet