CGI 환경 변수란?
CGI(Common Gateway Interface) 프로그램은 실행될 때 웹 서버로부터 다양한 환경 변수(Environment Variables)를 전달받습니다. 이 변수들은 클라이언트의 요청 정보, 서버 정보, 전송된 데이터의 형식 등을 담고 있어, CGI 프로그램을 작성할 때 매우 중요한 역할을 합니다.
아래 표는 모든 CGI 프로그램에서 접근할 수 있는 대표적인 환경 변수들을 정리한 것입니다.
주요 CGI 환경 변수 목록
| 번호 | 변수 이름 | 설명 |
| 1 | CONTENT_TYPE | 콘텐츠의 데이터 유형입니다. 클라이언트가 서버에 첨부 데이터를 전송할 때 사용됩니다. 예를 들어 파일 업로드 시 활용됩니다. |
| 2 | CONTENT_LENGTH | 쿼리 정보의 길이입니다. POST 방식 요청에서만 사용할 수 있습니다. |
| 3 | HTTP_COOKIE | 설정된 쿠키를 키(key)와 값(value) 쌍의 형태로 반환합니다. |
| 4 | HTTP_USER_AGENT | User-Agent 요청 헤더 필드로, 요청을 보낸 사용자 에이전트에 대한 정보를 담고 있습니다. 즉, 사용 중인 웹 브라우저의 이름입니다. |
| 5 | PATH_INFO | CGI 스크립트의 경로 정보입니다. |
| 6 | QUERY_STRING | GET 방식 요청과 함께 전송되는 URL 인코딩된 정보입니다. |
| 7 | REMOTE_ADDR | 요청을 보낸 원격 호스트(클라이언트)의 IP 주소입니다. 로깅(logging)이나 사용자 인증에 유용하게 활용됩니다. |
| 8 | REMOTE_HOST | 요청을 보낸 호스트의 완전한 도메인 이름(FQDN)입니다. 이 정보를 사용할 수 없는 경우에는 REMOTE_ADDR 변수를 통해 IP 주소를 확인할 수 있습니다. |
| 9 | REQUEST_METHOD | 요청에 사용된 메서드입니다. 가장 널리 쓰이는 메서드는 GET과 POST입니다. |
| 10 | SCRIPT_FILENAME | CGI 스크립트의 전체 경로입니다. |
| 11 | SCRIPT_NAME | CGI 스크립트의 이름입니다. |
| 12 | SERVER_NAME | 서버의 호스트명(hostname) 또는 IP 주소입니다. |
| 13 | SERVER_SOFTWARE | 서버에서 실행 중인 소프트웨어의 이름과 버전 정보입니다. |
Python에서 환경 변수 접근하기
Python CGI 프로그램에서는 표준 라이브러리의 os 모듈을 사용해 위 환경 변수들에 손쉽게 접근할 수 있습니다. 다음은 자주 사용되는 환경 변수를 읽어오는 간단한 예제입니다.
import os
print("Content-Type: text/html\n")
print("<html><body>")
print("요청 방식:", os.environ.get('REQUEST_METHOD'))
print("클라이언트 IP:", os.environ.get('REMOTE_ADDR'))
print("브라우저 정보:", os.environ.get('HTTP_USER_AGENT'))
print("</body></html>")os.environ.get() 함수를 사용하면 해당 환경 변수가 존재하지 않을 때 오류 없이 기본값(None)을 반환받을 수 있어 안전하게 코드를 작성할 수 있습니다.
정리
CGI 환경 변수는 클라이언트 요청과 서버 상태에 대한 핵심 정보를 제공합니다. 특히 REQUEST_METHOD, QUERY_STRING, REMOTE_ADDR 같은 변수는 폼 데이터 처리, 접속자 추적, 조건 분기 로직 작성에 필수적이므로 각 변수의 의미와 용도를 잘 이해해 두는 것이 좋습니다.