1. 程式人生 > >解決在python中進行CGI程式設計時無法響應的問題

解決在python中進行CGI程式設計時無法響應的問題

【時間】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錯誤