Entering Passive Mode

カテゴリ 'WWW' の記事
< 1 2 3 4 5 >

基本認証の動作 (Apache)

認証ダイアログ Fiddler

今日は、WWW 認証の動作を追いかけてみる。
前回同様、Web サーバとしては Apache を使う。

Apache は、組み込みで WWW 認証をサポートしており、
適切な設定を行うだけで認証を行うことができる。

以下は、Apache 固有の話になるが、
テストのために必要なので書いておこう。

まず、特定のディレクトリに対してアクセス制限をかける。
これは、httpd.conf または .htaccess で設定をする。
今回は、.htaccess を使うことにしよう。

HTTP におけるアクセス制限

HTTP は、広く多数に情報を公開するために生まれた。
そのため、ファイル転送の FTP や、
メール受信の POP などと違い、認証の機能は必要なかった。

しかし、WWW が普及してくると、
ユーザ名やパスワードによる認証機能をつけ、
一部の Web ページに対し、認証済みユーザにのみ
アクセスを許可するような運用が増してきた。

最初のうちは、そのようなアクセス制限のかかったページは、
HTML のフォームによってログイン画面を作り、
CGI プログラムによって認証を行うことが多かった。

CGI の動作

Fiddler

今日は、CGI の動作を具体的に見てみよう。
Web サーバの環境としては、Apache + Perl を使う。

Apache は代表的な Web サーバソフトウェアであり、
一般的な設定では、cgi の拡張子を持つファイルを、
CGI プログラムとして呼び出すことができる。

では、受け取ったクエリ文字列を、
そのまま出力するプログラムを作ってみよう。

========== hello.cgi ==========
#!/usr/local/bin/perl

フォームを処理するのは誰か

フォームは汎用的なものであるため、
開発プラットフォームとして利用しやすい。
そのため、フォームを使う Web サイトは一気に増加した。

さて、フォームが HTTP で送信される様子は見てきたが、
では、Web サーバはフォームのデータを受け取った後、
どのような処理を行うのであろうか。

HTTP では、フォームを送信する方法に関する規定はあるが、
フォームの用途は特に規定されていない。
また、フォームは HTML の製作者が自由に定義できるため、
当然ながら、その用途は製作者しか知らない。

本体としてのフォームの送信

Fiddler

昨日は、URL の一部としてフォームを送信する例を見た。
これは、form 要素の action 属性が GET であったため、
HTTP の GET メソッドによって処理が行われたからである。

GET は Web サーバのデータを「取得」するのが目的であり、
フォームの送信によって登録や更新は発生しない。
つまり、これは「検索系」で利用されるメソッドである。

フォームの送信には、POST メソッドを使う方法もある。
POST の場合、Web サーバにデータを送信すると、
Web サーバで登録や更新作業が発生すると考えられる。
つまり、これは「更新系」で利用されるメソッドである。

URL の一部としてのフォーム送信

Fiddler 文字コード表

今日は Fiddler を使ってフォームの動作を眺めてみよう。
サンプルとして、用語辞典の Web サイト e-Words を使う。

■ IT用語辞典 e-Words
http://e-words.jp

まず Fiddler を起動し、上記のページにアクセスする。
e-Words のトップページの左上には、
「IT 用語検索」のシンプルなフォームがあるので、
これを題材にすることにしよう。

フォーム: 利用者からサーバへ情報を送る

WWW が公開されたのは 1991 年である。
初期の WWW は、HTML も HTTP も力不足であった。

HTML 1.0 にはフォームが存在しなかったため、
利用者は、Web サーバが用意した HTML に含まれる
ハイパーリンクを順に辿ることで情報を閲覧した。

現在の Yahoo や Google などを代表とする、
Web サイトを検索するサービスなどは、
初期の WWW では実現できなかったのだ。

HTML: 文書の論理構造

ここで少し HTTP を離れよう。

ユーザエージェントの代表的なものに Web ブラウザがある。
Web ブラウザは、利用者が容易にサーバ内を巡回するため、
取得した HTML を視覚的に表示する機能を持つ。

HTML は、Hyper Text Markup Language の略である。
超越文章記述言語とでも訳しようか。

HTML の大きな特徴は、別の URL を示すリンクである。
このリンク(ハイパーリンクとも呼ばれる)のお陰で、
1 つの HTML 文書から、他の文書へと、
順々にたどることができるのである。

HTTP と HTML

HTTP では、クライアントがリクエストを送信した後、
サーバが返信するというのが一連の流れとなる。
そのため、1 度の通信で取得できるのは、
基本的に 1 つのデータだけとなる。

http://www.efc-editor.org にアクセスすると、
Fiddler に複数の通信が表示されたが、
最初の通信は HTML を取得するためのものだ。

リクエストを送信した Web ブラウザは HTML を理解する。
そのため、受け取った HTML を解析し、
それを元に画面を作成して表示した。

ユーザエージェントの要求

今度は逆に、ユーザエージェントが送信した内容を見てみよう。

Web サイトへのアクセスには Web ブラウザを利用したが、
利用者が Web ブラウザ上で入力したのは、
http://www.efc-editor.org という URL だけだが、
実際には多数のデータが送信されていることが分かる。

    GET / HTTP/1.1

クライアントのリクエストでも、最初の行は特別だ。
この行はリクエスト行と呼ばれ、3 つの要素が含まれる。

< 1 2 3 4 5 >
このページのトップへ戻る
© 2008 Project Loafer/Project Fireball and all blog writers. Powered by Nucleus CMS