当您需要将一些信息从浏览器传递到Web服务器,最后传递给CGI程序时,您肯定遇到过许多情况。浏览器最常使用两种方法,两种将此信息传递到Web服务器。这些方法是GET方法和POST方法。
使用GET方法传递信息
GET方法发送附加到页面请求的已编码用户信息。页面和编码信息由?分隔。字符如下-
http://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2
GET方法是将信息从浏览器传递到Web服务器的默认方法,它会生成一个长字符串,该字符串出现在浏览器的Location:框中。如果您有密码或其他敏感信息要传递到服务器,请不要使用GET方法。GET方法具有大小限制:在请求字符串中只能发送1024个字符。GET方法使用QUERY_STRING标头发送信息,并且可以通过QUERY_STRING环境变量在CGI程序中进行访问。
您可以通过简单地将键和值对与任何URL串联来传递信息,也可以使用HTML <FORM>标记使用GET方法传递信息。
这是一个简单的URL,它使用GET方法将两个值传递给hello_get.py程序。
/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI
以下是hello_get.py脚本,用于处理Web浏览器给出的输入。我们将使用cgi模块,这使得访问传递的信息非常容易-
#!/usr/bin/python # Import modules for CGI handling import cgi, cgitb # Create instance of FieldStorage form = cgi.FieldStorage() # Get data from fields first_name = form.getvalue('first_name') last_name = form.getvalue('last_name') print "Content-type:text/html\r\n\r\n" print "<html>" print "<head>" print "<title>Hello - Second CGI Program</title>" print "</head>" print "<body>" print "<h2>Hello %s %s</h2>" % (first_name, last_name) print "</body>" print "</html>"
这将产生以下结果-
Hello ZARA ALI
本示例使用HTML FORM和Submit按钮传递两个值。我们使用相同的CGI脚本hello_get.py来处理此输入。
<form action = "/cgi-bin/hello_get.py" method = "get"> First Name: <input type = "text" name = "first_name"> <br /> Last Name: <input type = "text" name = "last_name" /> <input type = "submit" value = "Submit" /> </form>
这是上面表格的实际输出,您输入名和姓,然后单击提交按钮以查看结果。
First Name: Last Name: Submit
将信息传递到CGI程序的通常更可靠的方法是POST方法。这将以与GET方法完全相同的方式打包信息,但不会在?之后将其作为文本字符串发送。在网址中将其作为单独的消息发送。该消息以标准输入的形式进入CGI脚本。
下面是处理GET和POST方法的相同hello_get.py脚本。
#!/usr/bin/python # Import modules for CGI handling import cgi, cgitb # Create instance of FieldStorage form = cgi.FieldStorage() # Get data from fields first_name = form.getvalue('first_name') last_name = form.getvalue('last_name') print "Content-type:text/html\r\n\r\n" print "<html>" print "<head>" print "<title>Hello - Second CGI Program</title>" print "</head>" print "<body>" print "<h2>Hello %s %s</h2>" % (first_name, last_name) print "</body>" print "</html>"
让我们再次采用与上述相同的示例,该示例使用HTML FORM和Submit按钮传递两个值。我们使用相同的CGI脚本hello_get.py来处理此输入。
<form action = "/cgi-bin/hello_get.py" method = "post"> First Name: <input type = "text" name = "first_name"><br /> Last Name: <input type = "text" name = "last_name" /> <input type = "submit" value = "Submit" /> </form>
这是上面表格的实际输出。您输入名字和姓氏,然后单击提交按钮以查看结果。
First Name: Last Name: Submit