본문 바로가기

SW정글사관학교

[SW 정글] 웹서버 구현 error - 403 Forbidden , Tiny couldn't read the file: ./ (feat, c)

반응형

 

이번 주차 과제는 웹서버를 직.접 구현하는 거다.

 

 

하는 도중 에러는 안나지만 페이지에 접속하면 아래와 같은 화면이 나온다.

 

 

 

찾아본 결과

 

// Analysis HTTP URI
int parse_uri(char *uri, char *filename, char * cgiargs)
{
  char *ptr;

  // 실행파일의 홈디렉토리는 /cgi-bin이라고 가정한다
  if(!strstr(uri, "cgi-bin")){ // if for static content
    strcpy(cgiargs, ""); // delete cgi args 
    strcpy(filename, "."); // uri를 ./index.html같은 상대 리눅스 경로이름으로 변환한다.
    strcat(filename, uri); // strcat(*str1, *str2) : str2를 str1에 연결하고 NULL 문자로 결과 스트링 종료
    if(uri[strlen(uri) -1 ] == '/'){ // 만일 uri가 /문자로 끝난다면
      // 기본파일이름을 추가한다.
      strcat(filename, "home.html");
    }
    return 1;
  }
  else{ // if for Dynamic content
    // delete all cgi args
    ptr = index(uri, "?");
    if(ptr){
      strcpy(cgiargs, ptr+1);
      *ptr = "\0";
    }
    else{
      strcpy(cgiargs, "");
    }
    // 나머지 uri 부분을 상대 리눅스 파일 이름으로 변환한다.
    strcpy(filename, ".");
    strcat(filename, uri);
    return 0;
  }
}

11 번째줄에 

if(uri[strlen(uri) -1 ] == "/")  👉 if(uri[strlen(uri) -1 ] == '/') 로 고쳐줘야 한다.

 

고치면 아래와 같이 잘 나온다!

 

이유는

c언어에서는 작은 따옴표는 '문자'에서 사용하고 큰 따옴표는 "문자열"에서 사용하기 때문이다 !

 

나와 같은 오류로 고생하는 정글러들을 위해 이글을 올린답!

 

 

이글을 읽는 모두 열코다 🔥🔥🔥🔥🔥!

반응형