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 标头发送信息,并且可以通过 CGI 程序中的 QUERY_STRING 环境变量访问。
您可以通过简单地连接键值对以及任何 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