私は組み込み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
。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
Webブラウザを介して組み込みシステムにアクセスできます。ブラウザにテキストを入力してcontinue
ボタンをクリックしましたが、ブラウザに次のように表示されました。
get-post theText=Hello world
だから私は考える郵便業務は正常に行われますか?
それから試してみましたが、curl -XPOST -d b=@/1.text 192.168.0.22
まだ同じ501エラーが発生しました。
私がここで何を見逃しているのでしょうか?