[英]Why does Python CGIHTTPServer on Ubuntu return my script if GET parameter has a slash character?
我正在尝试使用CGIHTTPServer运行一些基本的CGI。 我想传递一个带有特殊字符的参数(特别是URL,但是我认为这并不重要)。 我的设置适用于POST,但不适用于GET。 GET返回我的CGI脚本的内容。 我究竟做错了什么?
我在使用Python 2.7.3的Ubuntu 12.04上遇到此问题。 在Windows或Raspbian上运行相同的代码也可以。
这是我的例子。 我的HTTP服务器在这里,作为server.py:
#!/usr/bin/python
import BaseHTTPServer
import CGIHTTPServer
PORT = 8888
server = BaseHTTPServer.HTTPServer
Handler = CGIHTTPServer.CGIHTTPRequestHandler
httpd = server(("", PORT), Handler)
httpd.serve_forever()
我的网页testcgi.html如下所示:
<html>
<body>
<form method="get" action="/cgi-bin/testcgi.py">
<textarea name="comments" cols="20" rows="2">
Type message to GET here...
</textarea>
<br/>
<input type="submit" value="Test CGI GET">
</form>
<form method="post" action="/cgi-bin/testcgi.py">
<textarea name="comments" cols="20" rows="2">
Type message to POST here...
</textarea>
<br/>
<input type="submit" value="Test CGI POST">
</form>
</body>
</html>
...并且我的cgi脚本是testcgi.py,不确定是否很重要,但是这里是:
#!/usr/bin/python
#testcgi.py
import cgi
form = cgi.FieldStorage()
val1 = form.getvalue('comments')
print """
<html>
The form input is below...<br/>
</html>"""
print val1
我得到的输出(在Ubuntu上运行server.py)如下。 GET或POST输入“ Hello Goodbye”:
The form input is below...
Hello Goodbye
输入“ Hello / Goodbye”的POST:
The form input is below...
Hello/Goodbye
输入为“ Hello / Goodbye”的GET返回上述文件testcgi.py的内容。
据我所知,其他特殊字符(\\:%&等等)都可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.