Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonのCGI環境変数とは?主要な変数一覧とサンプルコードをわかりやすく解説

CGIプログラムは、実行時にWebサーバーからさまざまな環境変数を受け取ります。これらの環境変数には、クライアントのIPアドレスやブラウザの種類、送信されたデータの形式など、リクエストに関する重要な情報が格納されています。CGIプログラムを開発する際には、これらの変数を適切に活用することが不可欠です。

主なCGI環境変数の一覧

以下に、CGIプログラムからアクセスできる代表的な環境変数とその説明をまとめました。

番号変数名と説明
1CONTENT_TYPE
コンテンツのデータ型(MIMEタイプ)。クライアントがファイルアップロードなど、添付コンテンツをサーバーへ送信する際に使用されます。
2CONTENT_LENGTH
送信されたクエリ情報の長さ(バイト数)。POSTリクエストの場合にのみ利用できます。
3HTTP_COOKIE
設定されているクッキーを「キー=値」のペア形式で返します。
4HTTP_USER_AGENT
リクエストを送信したユーザーエージェント(Webブラウザ)の名前やバージョンなどの情報を含むリクエストヘッダーフィールドです。
5PATH_INFO
CGIスクリプトへのパス情報です。
6QUERY_STRING
GETメソッドのリクエストとともにURLに付加されて送信される、URLエンコードされた情報です。
7REMOTE_ADDR
リクエスト元のリモートホストのIPアドレス。アクセスログの記録や認証処理などに役立ちます。
8REMOTE_HOST
リクエスト元ホストの完全修飾ドメイン名(FQDN)。この情報が取得できない場合は、REMOTE_ADDRを使ってIPアドレスを取得します。
9REQUEST_METHOD
リクエストに使用されたメソッド。最も一般的なのはGETとPOSTです。
10SCRIPT_FILENAME
CGIスクリプトへの絶対パス(フルパス)です。
11SCRIPT_NAME
CGIスクリプトの名前です。
12SERVER_NAME
サーバーのホスト名またはIPアドレスです。
13SERVER_SOFTWARE
サーバーが稼働しているソフトウェアの名前とバージョンです。

すべてのCGI環境変数を表示するサンプルプログラム

次のシンプルなCGIプログラムは、利用可能なすべての環境変数を一覧表示します。os.environオブジェクトをループ処理することで、各変数の名前と値を出力しています。

#!/usr/bin/python
import os

print "Content-type: text/html\r\n\r\n";
print "<font size=+1>Environment</font><br>";

for param in os.environ.keys():
    print "<b>%20s</b>: %s<br>" % (param, os.environ[param])

このスクリプトを実行すると、CONTENT_TYPEやQUERY_STRING、REMOTE_ADDRといった環境変数の名前と、それぞれに格納されている値がHTMLとして出力されます。

補足:Python 2とPython 3の違いについて

上記のサンプルコードはPython 2の構文(print文)で書かれています。Python 3で動作させる場合は、print()関数形式に書き換える必要があります。また、現在ではCGIよりもWSGIやフレームワーク(Flask、Djangoなど)を使った開発が主流となっていますが、CGIの仕組みを理解することはWebアプリケーションの基礎を学ぶうえで依然として有用です。

  1. Python仮想環境の基本:venv・virtualenvによる環境構築と依存関係管理の完全ガイド

    はじめに開発者は、Python標準ライブラリに含まれていないモジュールやパッケージを使用する必要があるプロジェクトに、頻繁に直面します。こうしたパッケージは、特定のアプリケーション専用であることが少なくありません。例えば、マシンには最新バージョンのPython(仮にPython 3.6とします)がインストールされているのに、あるプロジェクトでは特定のバージョン(Python 2.7)が求められるケースを考えてみましょう。この場合、新しいパッケージだけでなく、すでにインストール済みのアプリケーションに対しても特定バージョンの要求が発生します。すると要件同士が衝突し、2.7と3.6のどちらか一方を

  2. 環境変数を守る:APIキーやシークレットのためのセキュリティ対策ガイド

    前回の記事「The Rubyists Guide To Environment Variables」では、環境変数システムの仕組みと、よくある誤解について解説しました。しかし、ある読者から「セキュリティについての言及が少ない」とのご指摘をいただきました。 現在では、秘密のAPIキーなどの重要な情報を環境変数に保存するのが一般的になっています。だからこそ、環境変数が持つセキュリティ上のリスクを正しく理解することが重要です。今回はそのポイントを見ていきましょう。 最悪のシナリオ ハッカーがroot権限、あるいはWebアプリケーションの所有ユーザーとしてサーバーへのアクセスに成功したと想像してくださ