curlを使用してthttpdのPOST操作を確認/テストするには?

curlを使用してthttpdのPOST操作を確認/テストするには?

私は組み込みLinuxシステム(kernel-5.10)を開発しています。thttpd私のシステムにWebサーバーがインストールされていて、ユーティリティを使ってテストしたいと思います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

HTTPGET操作は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.cgihttps://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>

再起動後、thttpdWebブラウザを介して組み込みシステムにアクセスできます。ブラウザにテキストを入力してcontinueボタンをクリックしましたが、ブラウザに次のように表示されました。

get-post theText=Hello world

だから私は考える郵便業務は正常に行われますか?

それから試してみましたが、curl -XPOST -d b=@/1.text 192.168.0.22まだ同じ501エラーが発生しました。

私がここで何を見逃しているのでしょうか?

ベストアンサー1

おすすめ記事