Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 작성하는 나의 첫 번째 CGI 프로그램


다음은 hello.py라는 이름의 CGI 스크립트에 연결되는 간단한 링크입니다. 이 파일은 /var/www/cgi-bin 디렉터리에 저장되며, 내용은 아래와 같습니다. CGI 프로그램을 실행하기 전에 반드시 UNIX의 chmod 755 hello.py 명령어로 파일 권한을 변경하여 실행 가능한 상태로 만들어야 합니다.

예제 코드

#!/usr/bin/python
print "Content-type:text/html\r\n\r\n"
print '<html>'
print '<head>'
print '<title>Hello Word - First CGI Program</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! This is my first CGI program</h2>'
print '</body>'
print '</html>'

실행 결과

hello.py를 클릭하면 다음과 같은 결과가 출력됩니다.

Hello Word! This is my first CGI program

이 hello.py 스크립트는 출력 결과를 STDOUT, 즉 화면에 기록하는 아주 간단한 파이썬 스크립트입니다. 하지만 한 가지 중요하고 특별한 요소가 숨어 있는데, 바로 가장 먼저 출력되는 Content-type:text/html\r\n\r\n이라는 줄입니다. 이 줄은 브라우저로 전송되며, 브라우저 화면에 어떤 유형의 콘텐츠를 표시해야 하는지 지정하는 역할을 합니다.

여기까지 읽었다면 CGI의 기본 개념은 이미 잡힌 것입니다. 이제 파이썬을 활용해 훨씬 복잡한 CGI 프로그램도 충분히 작성할 수 있습니다. 또한 이러한 스크립트는 RDBMS처럼 외부 시스템과 연동하여 정보를 주고받는 데에도 활용할 수 있습니다.

HTTP 헤더란?

앞서 살펴본 Content-type:text/html\r\n\r\n 줄은 브라우저가 콘텐츠를 올바르게 이해하도록 돕는 HTTP 헤더의 일부입니다. 모든 HTTP 헤더는 다음과 같은 형식을 따릅니다.

HTTP 필드 이름: 필드 내용

예제

Content-type: text/html\r\n\r\n

CGI 프로그래밍에서 자주 사용하게 되는 그 밖의 중요한 HTTP 헤더들을 아래 표에서 확인할 수 있습니다.

번호헤더 및 설명
1Content-type:
반환되는 파일의 형식을 정의하는 MIME 문자열입니다. 예: Content-type:text/html
2Expires: Date
정보가 무효화되는 날짜입니다. 브라우저가 페이지를 언제 새로 고침해야 할지 판단하는 데 사용됩니다. 유효한 날짜 형식은 01 Jan 1998 12:00:00 GMT와 같습니다.
3Location: URL
요청된 URL 대신 반환되는 URL입니다. 이 필드를 사용하면 요청을 원하는 다른 파일로 리디렉션할 수 있습니다.
4Last-modified: Date
해당 리소스가 마지막으로 수정된 날짜를 나타냅니다.
5Content-length: N
반환되는 데이터의 길이(바이트 단위)입니다. 브라우저는 이 값을 참고하여 파일의 예상 다운로드 시간을 표시합니다.
6Set-Cookie: String
string에 담긴 정보를 통해 쿠키를 설정합니다.