如何在纯CGI中区分GET和POST
我之前学过几种编程语言,比如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等,它们各自有自己的设计和规则。)