컬을 사용하여 thttpd에 대한 POST 작업을 확인/테스트하는 방법은 무엇입니까?

컬을 사용하여 thttpd에 대한 POST 작업을 확인/테스트하는 방법은 무엇입니까?

저는 임베디드 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.​​
POSTcurl

다음 명령에서 오류가 발생했습니다.

# 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 오류가 발생했습니다.

내가 여기서 무엇을 놓치고 있는 걸까요?

관련 정보