クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

ページが届くまでのしくみ

このレッスンのあとで: リクエストからレスポンスまで、ページが届く流れを追える。

45分のレッスンコマンド3件Web サーバー堅牢化のラボ:弱い nginx の設定を直して curl で確かめる

ページを開くと何が起きる?

ブラウザーにアドレスを打つと、数秒でページが出ます。その裏では、ブラウザーとサーバーが短い手紙をやり取りしています。

この手紙の決まりが HTTP です。読み方が分かれば、「ページが出ない」ときに理由を自分で探せます。

このレッスンのゴール

メモ

リクエストからレスポンスまで、ページが届く流れを追える。

重要な言葉

ことばいみれい
ブラウザーページを頼んで、画面に表示するアプリ
サーバーページやデータを持っていて、頼まれたら返す機器
HTTPブラウザーとサーバーが手紙をやり取りするときの決まり
リクエストブラウザーからサーバーへの「これをください」という頼みGET / HTTP/1.1
レスポンスサーバーからブラウザーへの返事
ステータスコード返事の結果を表す三けたの番号404
URLページの場所を表すアドレスhttp://web/files/

学生が入力するセルは、このプレビューでは空白です。

頼みと返事の一往復

Webの基本は、一往復です。ブラウザーが リクエスト を送り、サーバーが レスポンス を返します。

手紙と同じで、どちらにも先頭の一行、ヘッダー、本文があります。先頭の一行を読めば、何を頼み、どうなったかが分かります。

例:リクエストとレスポンスの中身

部分リクエスト(頼み)レスポンス(返事)
先頭の一行GET / HTTP/1.1HTTP/1.1 200 OK
ヘッダーHost: webServer: nginx
本文ふつうは無いページのHTML

学生が入力するセルは、このプレビューでは空白です。

返事のヘッダーだけを見る

コマンド
curl -I http://web

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

返事の一行目を読もう

一行目は HTTP/1.1 200 OK です。HTTP のバージョン、番号、短い言葉の順に並びます。

その下に Server: や Content-Type: が続きます。Content-Type: text/html は「これはHTMLのページです」という意味です。

番号の最初の数字で結果が分かる

ステータスコードは三けたで、最初の数字が結果の種類を表します。2は成功、3は別の場所へ移動、4はこちらの頼み方の問題、5はサーバーの問題です。

有名な番号は、少しだけ覚えれば十分です。

例:よく見る番号

番号意味例
200成功。ページを返した普通にページが出る
301別のアドレスへ移った古いアドレスから新しい方へ
403見せてはいけないログインが要るページ
404そのページは無いアドレスの打ち間違い
500サーバーの中で失敗したプログラムの不具合

学生が入力するセルは、このプレビューでは空白です。

存在するページの番号

コマンド
curl -s -o /dev/null -w '%{http_code}\n' http://web/

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

存在しないページの番号

コマンド
curl -s -o /dev/null -w '%{http_code}\n' http://web/nothing

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

URLは三つの部分でできている

URL は、ページの場所を表す文字列です。最初の部分は、どの決まりで話すかを表します。次はサーバーの名前、最後はサーバーの中の場所です。

サーバーの名前は、本物のサイトでは example.jp のような形です。ラボの中では短く web と呼びます。

例:URLを分ける

URL決まりサーバー場所
http://web/files/prices.csvhttpweb/files/prices.csv
https://example.jp/shop/httpsexample.jp/shop/

学生が入力するセルは、このプレビューでは空白です。

よくある間違い

注意

404 が出ると、サイトが壊れたと思いがちです。実はサーバーはちゃんと答えています。「そんなページは無い」と答えただけです。

さらに挑戦:番号を増やす

status_kind に、404 だけ「見つからない」と答える行を足してみましょう。

そのあと status_code("HTTP/1.1 404 Not Found") と status_kind(404) を続けて呼びます。見つからないページの返事を、自分の関数で読めます。

このラボとソースについて: Web サーバー堅牢化のラボ:弱い nginx の設定を直して curl で確かめる

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。