PythonでCGIプログラムを作成する際に必要なContent-Typeヘッダとは?
CGIスクリプトの出力と標準出力(STDOUT)
Pythonでhello.pyのようなシンプルなスクリプトを実行すると、その出力結果は標準出力(STDOUT)に書き込まれます。つまり、通常は画面上に直接表示されるということです。
重要なポイント:Content-Typeヘッダ
しかし、CGIプログラムには通常のスクリプトと異なる重要な特徴があります。それが、最初に出力しなければならない次の行です。
Content-type:text/html\r\n\r\n
この行はブラウザへ送り返され、ブラウザの画面に表示するコンテンツの種類(MIMEタイプ)を指定する役割を果たします。ここでは「text/html」を指定しているため、ブラウザは受け取ったデータをHTMLとして解釈して表示します。
なお、\r\n\r\nという2組の改行コードは必須です。これはHTTPヘッダ部分の終わりとボディ部分の始まりを区切る役割を持っており、これが正しく記述されていないとブラウザが正常に応答を処理できなくなります。
より高度なCGIプログラムの構築
Pythonを使えば、このような基本的な仕組みをベースに、より高度なCGIプログラムを作成することも可能です。例えば、以下のような処理を実装できます。
- 外部システムとの連携・データ交換
- RDBMS(リレーショナルデータベース管理システム)との情報のやり取り
このようにPythonのCGIプログラミングは、単純なテキスト表示にとどまらず、データベースと連携した動的なWebアプリケーション開発への第一歩としても活用できます。
-
Pythonでテキストエリア(TEXTAREA)のデータをCGIプログラムに渡す方法
複数行のテキストデータをCGIプログラムに送信したい場合には、HTMLのTEXTAREA要素を使用します。TEXTAREAは、ユーザーが自由に複数行の文章を入力できる入力欄を提供し、その内容は通常のテキストフィールドと同じようにCGIプログラムへ渡されます。 TEXTAREAを使ったフォームのHTMLコード例 以下は、TEXTAREAボックスを含むフォームのHTMLコード例です。 <form action = "/cgi-bin/textarea.py" method = "post" target = "_blank">
-
PythonのCGIとは?仕組みとサーバー設定方法をわかりやすく解説
CGI(Common Gateway Interface:共通ゲートウェイインターフェース)は、HTTPサーバーなどの情報サーバーと外部のゲートウェイプログラムがやり取りするための標準規格です。現在のバージョンはCGI/1.1であり、CGI/1.2が策定中です。Webブラウジングの流れCGIの概念を理解するために、ハイパーリンクをクリックして特定のWebページやURLを閲覧するときに何が起こるのかを見てみましょう。ブラウザがHTTP Webサーバーに接続し、URL(つまりファイル名)を要求します。WebサーバーはURLを解析してファイル名を探します。該当するファイルが見つかればそれをブラウザへ