2013-02-20 55 views
3

我目前的測試python腳本確實是這樣的:如何正確編寫接收json數據的python cgi腳本?

#!/usr/bin/env python 
import sys 
data = sys.stdin.read() 
myjson = json.loads(data) 

的問題是,即使這在某些情況下工作,在別人看來阻止,可能是在讀()。

由於其他一些原因,我不得不使用tomcat到cgi腳本,不知道這個問題無論如何。

回答

2

您需要在讀取之前檢查內容長度並限制sys.stdin.read()讀取的字節數。見cgi.parse_header()

更新:

你輸入的數據來通過由網絡服務器居住環境。它在os.environ訪問。

import os 
from cgi import parse_header 
os.environ['Content-Type'] = 'text/html; charset=utf-8' 
parse_header(os.environ['Content-Type']) 
# returns ('text/html', {'charset': 'utf-8'}) 

所以在你的CGI腳本,你需要(大約):

import os, cgi, sys 
cl, _ = parse_header(os.environ['Content-Length']) 
data = sys.stdin.read(int(cl)) 
+0

可否請你發佈一個基本的代碼示例中,CGI模塊文檔不提供使用parse_header(任何例子),其中應我得到它需要的參數? – sorin 2013-02-20 11:04:54