I'm writing a web application using CGI scripts written in bash.
For GET
requests, the request parameters are available in a variable named $QUERY_STRING
. However, I'm unable to figure out where the similar value would be stored for POST
requests.
I'm using the following script:
#!"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
And this is what I get:
$ 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"
How can I retrieve the values sent over POST
requests?
(If it matters, I'm using Apache 2.4).
When using the POST method. The POST values will be the input to your CGI program. So in bash just use
POST_STRING then contains the POST values in the same format as QUERY_STRING holds the values for a GET request.