- server는 cgi에 대한 타이머를 걸어도 되고 안걸어도 된다.
- \r\n이 아닌 \n이 올 수 있다.
- cgi script로 부터 무조건 header 하나 이상 오고, body는 안 올 수 있다.
반드시 넣어줘야 하는 환경변수
CGI_INTERFACE: "CGI/1.1"
QUERY_STRING: 없으면 ""이라도
REMOTE_ADDR: client ip
REQUEST_METHOD:
SCRIPT_NAME: cgi 경로
SERVER_NAME: host name or host ip
SERVER_PORT:
SERVER_PROTOCOL: "HTTP/1.1"
SERVER_SOFTWARE: "webserv"
PATH_INFO: 우리 과제에서는 request uri
PATH_TRANSLATED: PATH_INFO의 절대 경로
REDIRECT_STATUS: "200"
선택적으로 넣어줄 환경변수
CONTENT_TYPE: client message에 있으면 무조건. 없다고 아무값이나 채워주면 안됨.
CONTENT_LENGTH: body 보낼 것 있으면 무조건
HTTP_COOKIE: 우리 구현에서 필요하니까 있으면 무조건.
cgi에서 오는 respose
-
Status: 상태코드 메세지 ex) Status: 200 OK
server는 cgi의 상태코드를 반드시 client에게 그대로 보낼 필요는 없다.
만약 해당 field가 없다면 '200 OK'로 간주
-
Location: Status가 302일 경우 redirect 해야하는 경로
-
Content-Type: 없으면 text로 간주해도 된다.
-
Content-Length: 있으면 여기 값만큼만 body 파싱. 없으면 EOF까지 파싱.
그 외 http 메세지에서 보내는 것과 같은 헤더가 전달될 수 있다.
반드시 넣어줘야 하는 환경변수
CGI_INTERFACE: "CGI/1.1"
QUERY_STRING: 없으면 ""이라도
REMOTE_ADDR: client ip
REQUEST_METHOD:
SCRIPT_NAME: cgi 경로
SERVER_NAME: host name or host ip
SERVER_PORT:
SERVER_PROTOCOL: "HTTP/1.1"
SERVER_SOFTWARE: "webserv"
PATH_INFO: 우리 과제에서는 request uri
PATH_TRANSLATED: PATH_INFO의 절대 경로
REDIRECT_STATUS: "200"
선택적으로 넣어줄 환경변수
CONTENT_TYPE: client message에 있으면 무조건. 없다고 아무값이나 채워주면 안됨.
CONTENT_LENGTH: body 보낼 것 있으면 무조건
HTTP_COOKIE: 우리 구현에서 필요하니까 있으면 무조건.
cgi에서 오는 respose
Status: 상태코드 메세지 ex) Status: 200 OK
server는 cgi의 상태코드를 반드시 client에게 그대로 보낼 필요는 없다.
만약 해당 field가 없다면 '200 OK'로 간주
Location: Status가 302일 경우 redirect 해야하는 경로
Content-Type: 없으면 text로 간주해도 된다.
Content-Length: 있으면 여기 값만큼만 body 파싱. 없으면 EOF까지 파싱.
그 외 http 메세지에서 보내는 것과 같은 헤더가 전달될 수 있다.