如何从bash编写的CGI脚本中获取POST参数?

问题描述 投票:6回答:1

我正在使用bash编写的CGI脚本编写一个web应用程序。

对于 GET 请求,请求参数可以在一个名为 $QUERY_STRING. 然而,我无法弄清类似的值将存储在哪里,以便于 POST 请求。

我正在使用下面的脚本。

#!"c:/msys64/usr/bin/bash.exe"
# On *nix, replace above with #!/bin/bash

echo -en "Status: 200 OK\r\n"
echo -en "Content-type: text/plain\r\n\r\n"

declare -x
declare -a

这就是我得到的结果

$ curl -so - --data "abc=ZZZZZZ&d=PPPPPPPP" http://localhost/cgi-bin/test.sh | grep ZZZZZZ

$ curl -so - "http://localhost/cgi-bin/test.sh?abc=ZZZZZZ&d=PPPPPPPP" | grep ZZZZZZ
declare -x QUERY_STRING="abc=ZZZZZZ&d=PPPPPPPP"
declare -x REQUEST_URI="/cgi-bin/test.sh?abc=ZZZZZZ&d=PPPPPPPP"

我怎样才能检索到通过请求发送的值?POST 请求?

如果有关系的话,我使用的是Apache 2.4)。

bash shell post cgi
1个回答
6
投票

当使用POST方法时。POST值将是你CGI程序的输入。所以在bash中只要使用

read POST_STRING

POST_STRING则包含POST值,格式与QUERY_STRING保存GET请求的值相同。

© www.soinside.com 2019 - 2024. All rights reserved.