Skip to content

cgi 관련 지식 #32

@cryscham123

Description

@cryscham123
  1. server는 cgi에 대한 타이머를 걸어도 되고 안걸어도 된다.
  2. \r\n이 아닌 \n이 올 수 있다.
  3. 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

  1. Status: 상태코드 메세지 ex) Status: 200 OK
    server는 cgi의 상태코드를 반드시 client에게 그대로 보낼 필요는 없다.
    만약 해당 field가 없다면 '200 OK'로 간주

  2. Location: Status가 302일 경우 redirect 해야하는 경로

  3. Content-Type: 없으면 text로 간주해도 된다.

  4. Content-Length: 있으면 여기 값만큼만 body 파싱. 없으면 EOF까지 파싱.
    그 외 http 메세지에서 보내는 것과 같은 헤더가 전달될 수 있다.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions