저는 임베디드 Linux 시스템(kernel-5.10)을 개발 중입니다. thttpd
내 시스템에 웹 서버가 설치되어 있고 유틸리티를 사용하여 테스트하고 싶습니다 curl
.
다음과 같이 /etc/thttpd.conf
,
dir=/var/www/data
cgipat=**.cgi
logfile=/var/www/logs/thttpd_log
pidfile=/var/run/thttpd.pid
index.html
프로젝트를 복사해서 thttpd
에 넣었습니다 /var/www/data
.
HTTP GET
작업 이 curl -O http://192.168.0.22/index.html
.POST
curl
다음 명령에서 오류가 발생했습니다.
# curl -XPOST -d b=@/1.text 192.168.0.22
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>501 Not Implemented</title>
</head>
<body bgcolor="#cc9999" text="#000000" link="#2020ff" vlink="#4040cc">
<h2>501 Not Implemented</h2>
The requested method 'POST' is not implemented by this server.
<hr>
<address><a href="http://www.acme.com/software/thttpd/">thttpd/2.29 23May2018</a></address>
</body>
</html>
업데이트된 C-CGI 테스트
Jim 덕분에 C 언어로 다음 테스트를 수행했습니다.
먼저 간단한 C 프로그램이 있습니다 hello.cgi
.https://blog.csdn.net/Zhu_Zhu_2009/article/details/87797884,
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
char *szGet = NULL;
char szPost[256] = {0};
printf("Content-type:text/html\n\n");
szGet = getenv("QUERY_STRING");
if (szGet != NULL && strlen(szGet) > 0) {
printf("%s\n", szGet);
return 0;
}
printf("get--post\n");
gets(szPost);
if(strcmp(szPost, "") != 0)
printf("%s\n",szPost);
return 0;
}
index.html
그런 다음 다음과 같이 업데이트합니다 .
<html>
<head>
<title>Test</title>
</head>
<body>
<form action="hello.cgi" method="post">
<input type="text" name="theText">
<input type="submit" value="Continue">
</form>
</body>
</html>
재부팅 후 thttpd
웹 브라우저를 통해 임베디드 시스템에 액세스할 수 있습니다. 브라우저에 텍스트를 입력하고 continue
버튼을 클릭했는데 브라우저에 다음이 표시되었습니다.
get-post theText=Hello world
그래서 나는생각하다우편업무는 정상적으로 이루어지나요?
그런 다음 시도해 보았지만 curl -XPOST -d b=@/1.text 192.168.0.22
여전히 동일한 501 오류가 발생했습니다.
내가 여기서 무엇을 놓치고 있는 걸까요?