̃Gg[͂ĂȃubN}[Nɒlj

HTTP :: telnet で HTTP



telnet で HTTP するメリット

外部サーバと連携するアプリケーションのデバックを行う時など、生の通信内容を確認することで原因の切り分けが迅速に行えます。

よく使う HTTP メソッド

メソッド説明
GETリソース(資源)の参照を目的としたメソッド。リクエストに応じて、レスポンスヘッダーとレスポンスボディー(例えばHTML)を取得する
POSTリソース(資源)の変更を目的としたメソッド。リクエストに応じて、レスポンスヘッダーとレスポンスボディー(例えばHTML)を取得する
HEADファイルサイズや更新日時を調べる場合に利用するメソッド。レスポンスボディー(例えばHTML)を取得しません


GET メソッド

http://example.com/index.php?id=123&value=hoge にリクエストする

% telnet example.com http
Trying 192.168.1.2...
Connected to example.com (192.168.1.2).
Escape character is '^]'.
GET /index.php?id=123&value=hoge HTTP/1.0 ← 必須
Referer: http://example.com/hoge ← 省略可
User-Agent: Mozilla/1.00 ← 省略可
← 空行入力
HTTP/1.1 200 OK
Date: Tue, 05 Feb 2006 02:38:08 GMT
Server: Apache/1.3.34 (Unix) PHP/4.4.1
X-Powered-By: PHP/4.4.1
Connection: close
Content-Type: text/html; charset=Shift_JIS

<html>
<head>
 :
 :
</html> 

POST メソッド

<form action="http://example.com/index.php" method="post">
<input type="hidden" name="id" value="123">
<input type="hidden" name="value" value="hoge">
<input type="submit">
<form>

上記HTMLから http://example.com/index.php にPOSTリクエストすることを想定して、通信をエミュレートしてみる

% telnet example.com http
Trying 192.168.1.2...
Connected to example.com (192.168.1.2).
Escape character is '^]'.
POST /index.php HTTP/1.0 ← 必須
Host: example.com ← バーチャルホストでなければ省略可
Content-Type: application/x-www-form-urlencoded ← 必須?
Content-Length: 17 ← 「id=123&value=hoge」 のバイト数
Referer: http://example.com/hoge ← 省略可
User-Agent: Mozilla/1.00 ← 省略可
← 空行入力
id=123&value=hoge ← 必須
← 空行入力
HTTP/1.1 200 OK
Date: Tue, 05 Feb 2006 02:38:08 GMT
Server: Apache/1.3.34 (Unix) PHP/4.4.1
X-Powered-By: PHP/4.4.1
Connection: close
Content-Type: text/html; charset=Shift_JIS

<html>
<head>
 :
 :
</html> 

HEAD メソッド

http://example.com/index.html にリクエストする

% telnet example.com http
Trying 192.168.1.2...
Connected to example.com (192.168.1.2).
Escape character is '^]'.
HEAD /index.html HTTP/1.0
If-Modified-Since: Tue, 05 Feb 2006 03:39:35 GMT ← 比較したい日時を入力
← 空行入力
HTTP/1.1 304 Not Modified
Date: Tue, 05 Feb 2006 03:42:49 GMT
Server: Apache
Connection: close
ETag: "572cf4-1902-2342fg51"

Connection closed by foreign host.

もし、HTMLファイルが更新されていなければ、サーバーは「304 Not Modified」というレスポンスヘッダを返します。ヘッダを返すだけなので、トラフィックを削減できます。 (コンテンツデータは返しません)




protocol/http/telnet_http.txt