Temat: CGI nie działa metoda POST, ale GET już tak
Cześć,
Mam prostą stronę, podaje login i hasło i wysyłam je do skryptu SH (w ciągach input type nie ma znaku "<" bo forum nie przyjmuje wiadomości).
<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
<title>Polecenie</title>
<form action="/cgi-bin/ps.sh" method="get">
<div>
<fieldset>
<legend align="center">Formularz do wypełnienia </legend>
<p align="center">open</p>
<table align="center" bgcolor="silver">
<tr>
<td>
Podaj login: input type="text" name="login">
</td>
</tr>
<tr>
<td>
Podaj haslo: input type="password" name="password">
</tr>
<tr>
<td colspan="2" align="center">
input type="submit" value="Wyslij" />
input type="reset" value="Resetuj" />
<td>
</tr>
<table>
</div></form>
</fieldset>
</head>Ale metoda POST nie wysyła danych, natomast GET tak.
Skąd wiem, co wysyłam? Bo skypt SH to:
#!/bin/sh
login=`echo "$QUERY_STRING" | sed -n 's/^.*login=\([^&]*\).*$/\1/p' | sed "s/[%20+]/ /g"`
pass=`echo "$QUERY_STRING" | sed -n 's/^.*password=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
echo "Content-type: text/plain"
echo ""
echo "========"
echo "Serwer Software = $SERVER_SOFTWARE"
echo "Serwer name= $SERVER_NAME"
echo "Gateway Inteface= $GATEWAY_INTERFACE"
echo "Serwer prokolo = $SERVER_PROTOCOL"
echo "Serwer post = $SERVER_PORT"
echo "request method = $REQUEST_METHOD"
echo "path info = $PATH_INFO"
echo "path translated = $PATH_TRANSLATED"
echo "script name = $SCRIPT_NAME"
echo "query string = $QUERY_STRING"
echo "remonte host = $REMOTE_HOST"
echo "remonte addr = $REMOTE_ADDR"
echo "auth type = $AUTH_TYPE"
echo "remonte user = $REMOTE_USER"
echo "remonte ident = $REMOTE_IDENT"
echo "content type = $CONTENT_TYPE"
echo "content lenght = $CONTENT_LENGTH"
echo "http accept = $HTTP_ACCEPT"
echo "http user agent = $HTTP_USER_AGENT"
echo "======="Wynik działania dla POST to:
========
Serwer Software = lighttpd/1.4.30
Serwer name= xxxxxxx.xxx
Gateway Inteface= CGI/1.1
Serwer prokolo = HTTP/1.1
Serwer post = 81
request method = POST
path info =
path translated =
script name = /cgi-bin/ps.sh
query string =
remonte host =
remonte addr = xx.xx.xx.xx
auth type =
remonte user =
remonte ident =
content type = application/x-www-form-urlencoded
content lenght = 27
http accept = text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
http user agent = Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36
=======Czyli query string jest pusty. Jak pisałem, dla GET działa.
Testowałem dla HTTP oraz HTTPS, dla lighttpd oraz uhttpd, na róznych przeglądarach, ciągle to samo. Jakieś sugestie?
Pozdrawiam, Krzysiek