在 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
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP