HTTP 패킷 GET POST...문제
C CGI 로 패킷을 받을때 문제가 발생했습니다...
HTTP에서 GET 으로 패킷을 보낼때는 예를들면
http://www.example.com/abc.cgi?a=3&b=5 이런식으로 보낸다고 가정하면
GET 으로 넘겨주면 CGI 에서 genenv("QUERY_STRING") 으로 처리하면 뒤에 a=3&b=5 의 값을 가져올수 있었습니다..
근데 POST 로 넘겨주면 a=3&b=5 의 값이 QUERY_STRING 으로 처리가 안되고 stdin 으로 읽어와야한다그래서
if(getenv("REQUEST_METHOD") == NULL) return NULL;
if(strcmp("POST", getenv("REQUEST_METHOD")))return NULL;
if(getenv("CONTENT_LENGTH") == NULL) qError("_get_query(): Your browser sent a non-HTTP compliant message.");
cl = atoi(getenv("CONTENT_LENGTH"));
query = (char *)malloc(sizeof(char) * (cl + 1));
for(i = 0; i < cl; i++)
query[i] = fgetc(stdin);
query[i] = '\0';
return query;
이런식으로 값을 읽어오는데 값이 이상한값이 들어옵니다 ...
위 예제에서 query 값을 출력해보면 원래는 a=3&b=5 의 값이 들어와야하지만
이상한 알수없는 문자들이 들어옵니다...
위의 코드는 qDecoder 라는 C CGI 라이브러리에서 가져온 일부분입니다..
무엇이 문제일까요??
qDecoder 공식 Q&A
qDecoder 공식 Q&A 게시판(http://www.qdecoder.org/apps/qna.cgi?db=qdecoder)에서 물어보시는게 빠를 듯 합니다.
댓글 달기