How to get POST parameters from CGI scripts written in bash?

China☆狼群 提交于 2019-11-28 04:28:22

问题


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).


回答1:


When using the POST method. The POST values will be the input to your CGI program. So in bash just use

read POST_STRING

POST_STRING then contains the POST values in the same format as QUERY_STRING holds the values for a GET request.



来源:https://stackoverflow.com/questions/30802775/how-to-get-post-parameters-from-cgi-scripts-written-in-bash

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!