解決在python中進行CGI程式設計時無法響應的問題
阿新 • • 發佈:2018-11-19
【時間】2018.11.06
【題目】解決在python中進行CGI程式設計時無法響應的問題
概述
在閱讀《python程式設計》第一章的CGI程式設計部分時,出現了無法響應的問題,最後參考 解決了問題,在此做個記錄
一、《python程式設計》中的原始碼
1、HTML程式碼-----cgi101.html
<html> <title>Interactive Page</title> <body> <form method=POST action="cgi-bin/cgi101.py"> <P><B>Enter your name:</B> <P><input type=text name=user> <P><input type=submit> </form> </body></html>
2、響應的python 程式碼----cgi-bin/cgi101.py
import cgi form = cgi.FieldStorage() # parse form data print('Content-type: text/html\n') # hdr plus blank line print('<title>Reply Page</title>') # html reply page if not 'user' in form: print('<h1>Who are you?</h1>') else: print('<h1>Hello <i>%s</i>!</h1>' % cgi.escape(form['user'].value))
二、出現的問題
執行HTML程式碼,在文字中輸入內容,提交後出現404的錯誤。如下:
執行:
出現的問題1:
或者直接返回了cgi101.py的原始碼:
三、解決方法
解決方法分兩步,一是開啟電腦本機的伺服器服務,二是修改action響應的地址
1、開啟電腦本機的http伺服器服務
在cmd終端中將路徑cd到cgi-bin\之前的目錄,輸入命令
“python -m http.server --cgi 8081”開啟服務
注意:--cgi 後面的是伺服器的埠,必須使用沒有被其他程序佔用的埠,否則會出現錯誤:OSError: [WinError 10013] 以一種訪問許可權不允許的方式做了一個訪問套接字的嘗試。
2、修改action響應的地址
在HTML程式碼中的<form method=POST action="cgi-bin/cgi101.py">中的action部分表示請求響應的地址,應改為action="http://localhost:8082/cgi-bin/cgi101.py" ,其中8082表示埠好,根據自己的情況修改。
四、修改後的執行結果
注意:最後將響應的pythonwen檔案放在cgi-bin資料夾下,否則有的瀏覽器會出現501錯誤