C 언어
CGI(Common Gateway Interface)는 웹 서버와 사용자 정의 스크립트 간에 정보가 교환되는 방식을 정의하는 일련의 표준입니다.
CGI 사양은 현재 NCSA에서 유지 관리하며 NCSA는 CGI를 다음과 같이 정의합니다. -
CGI(Common Gateway Interface)는 외부 게이트웨이 프로그램이 HTTP 서버와 같은 정보 서버와 인터페이스하기 위한 표준입니다.
현재 버전은 CGI/1.1이며 CGI/1.2는 진행 중입니다.
CGI의 개념을 이해하기 위해 하이퍼링크를 클릭하여 특정 웹 페이지나 URL을 탐색할 때 어떤 일이 발생하는지 살펴보겠습니다.
귀하의 브라우저는 HTTP 웹 서버에 접속하여 URL을 요구합니다. 파일 이름.
웹 서버는 URL을 구문 분석하고 파일 이름을 찾습니다. 요청된 파일을 찾으면 웹 서버는 해당 파일을 브라우저로 다시 보냅니다. 그렇지 않으면 잘못된 파일을 요청했음을 나타내는 오류 메시지를 보냅니다.
웹 브라우저는 웹 서버로부터 응답을 받아 수신된 응답에 따라 수신된 파일 또는 오류 메시지를 표시합니다.
그러나 특정 디렉토리의 파일이 요청될 때마다 해당 파일이 다시 전송되지 않도록 HTTP 서버를 설정할 수 있습니다. 대신 프로그램으로 실행되고 프로그램에서 생성된 출력은 표시하기 위해 브라우저로 다시 전송됩니다.
CGI(Common Gateway Interface)는 응용 프로그램(CGI 프로그램 또는 CGI 스크립트라고 함)이 웹 서버 및 클라이언트와 상호 작용할 수 있도록 하는 표준 프로토콜입니다. 이러한 CGI 프로그램은 Python, PERL, Shell, C 또는 C++ 등으로 작성할 수 있습니다.
다음의 간단한 프로그램은 CGI의 간단한 구조를 보여줍니다 -
CGI 프로그래밍을 진행하기 전에 웹 서버가 CGI를 지원하고 CGI 프로그램을 처리하도록 구성되어 있는지 확인하십시오. HTTP 서버에서 실행되는 모든 CGI 프로그램은 미리 구성된 디렉토리에 보관됩니다. 이 디렉토리를 CGI 디렉토리라고 하며 규칙에 따라 /var/www/cgi-bin으로 이름이 지정됩니다. 규칙에 따라 CGI 파일의 확장자는 .cgi입니다. , C++ 실행 가능하지만.
기본적으로 Apache Web Server는 /var/www/cgi-bin에서 CGI 프로그램을 실행하도록 구성되어 있습니다. CGI 스크립트를 실행할 다른 디렉토리를 지정하려면 httpd.conf 파일에서 다음 섹션을 수정할 수 있습니다. -
<Directory "/var/www/cgi-bin"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> <Directory "/var/www/cgi-bin"> Options All </Directory>
여기에서는 웹 서버가 성공적으로 실행되고 있으며 Perl이나 Shell 등과 같은 다른 CGI 프로그램을 실행할 수 있다고 가정합니다.
다음 C++ 프로그램 내용을 고려하십시오 -
#include <iostream> using namespace std; int main () { cout << "Content-type:text/html\r\n\r\n"; cout << "<html>\n"; cout << "<head>\n"; cout << "<title>Hello World - First CGI Program</title>\n"; cout << "</head>\n"; cout << "<body>\n"; cout << "<h2>Hello World! This is my first CGI program</h2>\n"; cout << "</body>\n"; cout << "</html>\n"; return 0; }
위의 코드를 컴파일하고 실행 파일의 이름을 cplusplus.cgi로 지정합니다. 이 파일은 /var/www/cgi-bin 디렉토리에 보관 중이며 다음과 같은 내용을 담고 있습니다. CGI 프로그램을 실행하기 전에 chmod 755 cplusplus.cgi를 사용하여 파일 모드를 변경했는지 확인하십시오. 파일을 실행 가능하게 만드는 UNIX 명령입니다.
위의 C++ 프로그램은 화면과 같은 STDOUT 파일에 출력을 쓰는 간단한 프로그램입니다. 첫 번째 줄 인쇄 Content-type:text/html\r\n\r\n라는 중요하고 추가 기능이 있습니다. . 이 줄은 브라우저로 다시 전송되고 브라우저 화면에 표시할 콘텐츠 유형을 지정합니다. 이제 CGI의 기본 개념을 이해하고 Python을 사용하여 많은 복잡한 CGI 프로그램을 작성할 수 있습니다. C++ CGI 프로그램은 RDBMS와 같은 다른 외부 시스템과 상호 작용하여 정보를 교환할 수 있습니다.
Content-type:text/html\r\n\r\n 줄 콘텐츠를 이해하기 위해 브라우저로 전송되는 HTTP 헤더의 일부입니다. 모든 HTTP 헤더는 다음과 같은 형식입니다 -
HTTP Field Name: Field Content For Example Content-type: text/html\r\n\r\n
CGI 프로그래밍에서 자주 사용할 다른 중요한 HTTP 헤더가 거의 없습니다.
Sr.No | 헤더 및 설명 |
---|---|
1 | 콘텐츠 유형: 반환되는 파일의 형식을 정의하는 MIME 문자열입니다. 예는 Content-type:text/html입니다. |
2 | 만료:날짜 정보가 무효화되는 날짜입니다. 브라우저에서 페이지를 새로 고쳐야 하는 시기를 결정하는 데 사용해야 합니다. 유효한 날짜 문자열은 1998년 1월 1일 12:00:00 GMT 형식이어야 합니다. |
3 | 위치:URL 요청된 URL 대신 반환되어야 하는 URL입니다. 이 파일을 사용하여 요청을 모든 파일로 리디렉션할 수 있습니다. |
4 | 최종 수정 날짜:날짜 리소스의 마지막 수정 날짜입니다. |
5 | 콘텐츠 길이:N 반환되는 데이터의 길이(바이트)입니다. 브라우저는 이 값을 사용하여 파일의 예상 다운로드 시간을 보고합니다. |
6 | 쿠키 설정:문자열 문자열을 통해 전달된 쿠키 설정 . |
모든 CGI 프로그램은 다음 환경 변수에 액세스할 수 있습니다. 이러한 변수는 CGI 프로그램을 작성할 때 중요한 역할을 합니다.
Sr.No | 변수 이름 및 설명 |
---|---|
1 | CONTENT_TYPE 클라이언트가 첨부된 콘텐츠를 서버로 보낼 때 사용되는 콘텐츠의 데이터 유형입니다. 예를 들어 파일 업로드 등 |
2 | CONTENT_LENGTH POST 요청에만 사용할 수 있는 쿼리 정보의 길이입니다. |
3 | HTTP_COOKIE 키와 값 쌍의 형태로 설정된 쿠키를 반환합니다. |
4 | HTTP_USER_AGENT User-Agent request-header 필드는 요청을 시작한 사용자 에이전트에 대한 정보를 포함합니다. 웹 브라우저의 이름입니다. |
5 | PATH_INFO CGI 스크립트의 경로입니다. |
6 | QUERY_STRING GET 메소드 요청과 함께 전송되는 URL 인코딩 정보입니다. |
7 | REMOTE_ADDR 요청하는 원격 호스트의 IP 주소입니다. 이는 로깅 또는 인증 목적으로 유용할 수 있습니다. |
8 | REMOTE_HOST 요청하는 호스트의 완전한 이름입니다. 이 정보를 사용할 수 없는 경우 REMOTE_ADDR을 사용하여 IR 주소를 얻을 수 있습니다. |
9 | REQUEST_METHOD 요청하는 데 사용되는 메서드입니다. 가장 일반적인 방법은 GET 및 POST입니다. |
10 | SCRIPT_FILENAME CGI 스크립트의 전체 경로입니다. |
11 | SCRIPT_NAME CGI 스크립트의 이름입니다. |
12 | SERVER_NAME 서버의 호스트 이름 또는 IP 주소입니다. |
13 | SERVER_SOFTWARE 서버가 실행 중인 소프트웨어의 이름과 버전입니다. |
다음은 모든 CGI 변수를 나열하는 작은 CGI 프로그램입니다.
#include <iostream> #include <stdlib.h> using namespace std; const string ENV[ 24 ] = { "COMSPEC", "DOCUMENT_ROOT", "GATEWAY_INTERFACE", "HTTP_ACCEPT", "HTTP_ACCEPT_ENCODING", "HTTP_ACCEPT_LANGUAGE", "HTTP_CONNECTION", "HTTP_HOST", "HTTP_USER_AGENT", "PATH", "QUERY_STRING", "REMOTE_ADDR", "REMOTE_PORT", "REQUEST_METHOD", "REQUEST_URI", "SCRIPT_FILENAME", "SCRIPT_NAME", "SERVER_ADDR", "SERVER_ADMIN", "SERVER_NAME","SERVER_PORT","SERVER_PROTOCOL", "SERVER_SIGNATURE","SERVER_SOFTWARE" }; int main () { cout << "Content-type:text/html\r\n\r\n"; cout << "<html>\n"; cout << "<head>\n"; cout << "<title>CGI Environment Variables</title>\n"; cout << "</head>\n"; cout << "<body>\n"; cout << "<table border = \"0\" cellspacing = \"2\">"; for ( int i = 0; i < 24; i++ ) { cout << "<tr><td>" << ENV[ i ] << "</td><td>"; // attempt to retrieve value of environment variable char *value = getenv( ENV[ i ].c_str() ); if ( value != 0 ) { cout << value; } else { cout << "Environment variable does not exist."; } cout << "</td></tr>\n"; } cout << "</table><\n"; cout << "</body>\n"; cout << "</html>\n"; return 0; }
실제 예의 경우 CGI 프로그램으로 많은 작업을 수행해야 합니다. C++ 프로그램용으로 작성된 CGI 라이브러리가 있습니다. 이 라이브러리는 ftp://ftp.gnu.org/gnu/cgicc/에서 다운로드할 수 있으며 라이브러리 설치 단계를 따르십시오 -
$tar xzf cgicc-X.X.X.tar.gz $cd cgicc-X.X.X/ $./configure --prefix=/usr $make $make install
관련 문서는 'C++ CGI Lib Documentation.
에서 확인하실 수 있습니다.브라우저에서 웹 서버로, 그리고 궁극적으로 CGI 프로그램으로 일부 정보를 전달해야 하는 상황을 많이 겪었을 것입니다. 대부분의 브라우저는 이 정보를 웹 서버에 전달하기 위해 두 가지 방법을 사용합니다. 이러한 메소드는 GET 메소드와 POST 메소드입니다.
GET 메서드는 페이지 요청에 추가된 인코딩된 사용자 정보를 보냅니다. 페이지와 인코딩된 정보는 ? 다음과 같은 문자 -
http://www.test.com/cgi-bin/cpp.cgi?key1=value1&key2=value2
GET 방법은 브라우저에서 웹 서버로 정보를 전달하는 기본 방법이며 브라우저의 Location:box에 나타나는 긴 문자열을 생성합니다. 서버에 전달할 암호 또는 기타 민감한 정보가 있는 경우 GET 방법을 사용하지 마십시오. GET 메서드에는 크기 제한이 있으며 요청 문자열에 최대 1024자를 전달할 수 있습니다.
GET 방법을 사용할 때 정보는 QUERY_STRING http 헤더를 사용하여 전달되며 QUERY_STRING 환경 변수를 통해 CGI 프로그램에서 액세스할 수 있습니다.
단순히 키와 값 쌍을 URL과 연결하여 정보를 전달하거나 HTML
C 언어
C++는 범용 객체 지향 프로그래밍 언어입니다. 그것은 1980년경 Bell Labs의 Bjarne Stroustrup에 의해 만들어졌습니다. C와 매우 호환되어 한 줄의 소스 코드를 변경하지 않고도 C 프로그램의 99% 이상을 컴파일할 것입니다. C++은 클래스와 객체의 개념을 도입했습니다. 고급 및 저급 언어 기능을 캡슐화합니다. 따라서 중급 언어로 간주됩니다. C++ 프로그래밍은 IT 산업에서 매우 요구되는 기술입니다. C++ 프로그래밍 기술을 보유하면 C++ 프로그래머 또는 개발자로서 밝은 경력을 시작할 수 있습니다. 이
CGI란 무엇입니까? CGI(Common Gateway Interface)는 웹 서버와 사용자 정의 스크립트 간에 정보가 교환되는 방식을 정의하는 일련의 표준입니다. CGI 사양은 현재 NCSA에서 유지 관리하며 NCSA는 CGI를 다음과 같이 정의합니다. - CGI(Common Gateway Interface)는 외부 게이트웨이 프로그램이 HTTP 서버와 같은 정보 서버와 인터페이스하기 위한 표준입니다. 현재 버전은 CGI/1.1이며 CGI/1.2는 진행 중입니다. 웹 브라우징 CGI의 개념을 이해하기