リクエストの構造
Coddyの「ターミナルで学ぶネットワーク」コースのレッスン 20/47。
curl の下では、HTTP リクエストはソケット経由で送信されるプレーンテキストです。まず、何を要求しているかを示す1行から始まります。
GET /index.html HTTP/1.13つの部分があります。メソッド(どのような操作か)、パス(どの対象か)、そしてバージョンです。その後に、1行につき1つのヘッダーが続き、空行、それから任意のボディが続きます。
空行は飾りではありません。これによってサーバーはヘッダーが終わり、ボディがあればその開始位置が分かります。空行のないリクエストは、サーバーがまだ残りの内容を待ち続けるため、停止したようになります。
手動で1つ送信することもできます。nc は生の接続を開き、そこへ入力した内容をそのまま回線に送ります。
printf 'GET / HTTP/1.0\r\n\r\n' | nc 127.0.0.1 9110\r\n は HTTP が要求する行末で、2つ続いているものが空行です。
チャレンジ
難しいcurlは完全に使わず、自分でHTTPをやり取りします。
rawを含むindex.htmlを作成します- フォルダーをポート9110で配信します
ncを通じて生のGET /index.html HTTP/1.0リクエストを送信し、返ってきた内容の最初の行だけを出力します
その最初の行が、サーバーのステータス行です。期待される出力:
HTTP/1.0 200 OK空行を忘れないでください:
printf 'GET /index.html HTTP/1.0\r\n\r\n'。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ターミナルで学ぶネットワークのすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド