[英]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.