如何在纯CGI中区分GET和POST

2 投票
1 回答
625 浏览
提问于 2025-04-18 15:08

我之前学过几种编程语言,比如J2EE,还对PHP有点了解。

大多数编程语言都有特定的方法来提取POST或GET请求中的数据。比如,PHP使用$_POST$_GET数组,而J2EE则有doGet()doPost()这两个方法。

在学习Python的时候,我发现可以用abc = cgi.FieldStorage()来提取GET和POST中的数据,然后进行处理。不过,如果我用这个方法做一个网站,会不会有安全隐患呢?假设有个页面是用POST获取数据的,但有用户直接访问这个页面,并在网址中输入了一些GET数据。

那么,有没有办法可以检查网页是接收到POST请求还是GET请求,而不使用像Django这样的框架呢?我发现用Django或其他框架可以做到,但我想找一个通用的Python解决方案。

1 个回答

4

CGI通过一些大家都知道的环境变量来传递元数据。在这个情况下,“GET/POST”的信息是通过REQUEST_METHOD来提供的。

你可以这样来访问它:

import os
print os.environ['REQUEST_METHOD']

(还有一些其他的协议,比如SCGI / WSGI / FastCGI等,它们各自有自己的设计和规则。)

撰写回答