Python CGI 프로그래밍의 핵심, Content-type 헤더란?
hello.py처럼 간단한 파이썬 스크립트를 실행하면 실행 결과는 STDOUT(표준 출력), 즉 화면에 그대로 출력됩니다. 하지만 웹 서버 환경에서 동작하는 CGI(Common Gateway Interface) 프로그램을 작성할 때는 여기서 한 단계 더 나아가야 합니다.
왜 Content-type이 필수일까?
CGI 프로그램에서 가장 중요한 규칙 중 하나는, 본문 내용을 출력하기 전에 반드시 첫 줄에 다음 헤더를 출력해야 한다는 점입니다.
Content-type: text/html\r\n\r\n
이 줄은 브라우저로 되돌아가며, 브라우저 화면에 어떤 유형의 콘텐츠를 표시해야 하는지 알려주는 역할을 합니다. 끝에 붙은 \r\n\r\n(빈 줄)은 HTTP 헤더 부분과 실제 본문(body)을 구분하는 구분자로, 생략하면 브라우저가 응답을 올바르게 해석하지 못하고 오류가 발생할 수 있습니다.
자주 사용되는 Content-type(MIME 타입) 예시
- text/html — HTML 문서를 브라우저에 렌더링할 때
- text/plain — 서식 없는 일반 텍스트를 출력할 때
- application/json — API 응답으로 JSON 데이터를 반환할 때
- application/xml — XML 형식의 데이터를 전송할 때
Python으로 작성하는 고급 CGI 프로그램
기본적인 헤더 출력만 익히면, Python으로 훨씬 발전된 CGI 프로그램을 만들 수 있습니다. CGI 스크립트는 외부 시스템과 상호작용할 수 있으며, RDBMS(MySQL, PostgreSQL 등)와 연동해 데이터를 주고받는 기능도 구현할 수 있습니다. 이를 활용하면 사용자 입력 처리, 폼 데이터 검증, 데이터베이스 기반 동적 웹 페이지 생성 같은 실질적인 웹 애플리케이션 개발이 가능합니다.
결론적으로, Python CGI 프로그램을 작성할 때 가장 먼저 기억해야 할 것은 Content-type 헤더를 올바른 MIME 타입과 함께 첫 줄에 출력하는 것입니다. 이 기본 원칙만 지키면 안정적인 CGI 프로그래밍의 첫걸음을 뗄 수 있습니다.