2010-04-20 49 views
14

我在寫一個非常簡單的web服務,用Python編寫,並在Apache服務器上作爲CGI運行。從Python CGI腳本中讀取客戶端的頭文件?

根據Python文檔(某處...我忘了在哪裏),我可以使用sys.stdin讀取由隨機客戶端發佈的數據,並且這一直工作正常。但是,我希望能夠讀取HTTP頭信息 - 傳入IP,用戶代理等。我現在還想保持它非常簡單,只使用Python庫(所以不需要mod-python)。我該怎麼做呢?

回答

13

如果你正在運行的CGI,你不能直接讀取HTTP頭,但Web服務器把很多的信息到環境變量爲你。你可以從os.environ中選擇它[]

可能存在的環境變量列表相當長。您可以通過搜索「公共網關接口」來查找它。例如,在http://www.ietf.org/rfc/rfc3875.txt中,它們被稱爲「元變量」。

+0

謝謝!那正是我需要的。 – jbreed 2010-04-26 16:40:25

4

正如this page所解釋的,大多數HTTP請求標頭都可以通過環境變量提供給CGI腳本。運行cgi.test()而不是腳本來查看顯示回訪問瀏覽器的環境(包括HTTP請求標頭)。

8

這些都是通過環境給CGI腳本:

import os 
user_agent = os.environ["HTTP_USER_AGENT"] 
ip = os.environ["REMOTE_ADDR"]