在 Python CGI 编程中,GET 和 POST 方法有什么区别?


GET 和 POST 方法

您可能遇到过许多需要将一些信息从浏览器传递到 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 方法

这是一个简单的 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

简单表单示例 - GET 方法

此示例使用 HTML 表单和提交按钮传递两个值。我们使用相同的 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

使用 POST 方法传递信息

将信息传递到 CGI 程序的一种通常更可靠的方法是 POST 方法。此方法以与 GET 方法完全相同的方式打包信息,但它不是在 URL 中 ? 后面发送为文本字符串,而是将其发送为单独的消息。此消息以标准输入的形式进入 CGI 脚本。

下面是相同的 hello_get.py 脚本,它处理 GET 和 POST 方法。

#!/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 表单和提交按钮传递两个值。我们使用相同的 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

 

更新于: 2020-06-16

2K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.