2017-01-09 23 views
-1

我使用Python的BaseHTTPServer和實施以下很簡單BaseHTTPRequestHandler:Python的BaseHTTPServer返回毫無價值響應

class WorkerHandler(BaseHTTPRequestHandler): 

    def do_GET(self): 
     self.wfile.write('{"status" : "ready"}') 
     self.send_response(200) 

當我運行從Web瀏覽器GET查詢,通過簡單地將localhost:port,我得到如下回應:

{"status" : "ready"}HTTP/1.0 200 OK 
Server: BaseHTTP/0.3 Python/2.7.12 
Date: Mon, 09 Jan 2017 12:45:13 GMT 

我只想要JSON。我怎樣才能讓服務器不發送這個垃圾數據?

HTTP/1.0 200 OK 
Server: BaseHTTP/0.3 Python/2.7.12 
Date: Mon, 09 Jan 2017 12:45:13 GMT 
+1

後面加上end_headers 1.對於大多數應用程序,最好避免使用「BaseHTTPServer」。考慮在諸如Django或Flask之類的Web框架之上使用像Nginx或IIS這樣的真正的HTTP服務器,除非你有*非常*清楚而有說服力的理由來堅持'BaseHTTPServer'。這不是「垃圾數據」。它是HTTP響應的一部分。這只是無序(並根據你的回答,不按順序,因爲你以錯誤的順序調用)。 – jpmc26

回答

0

最後成功修復它自己。與您分享:

class WorkerHandler(BaseHTTPRequestHandler): 

    def do_GET(self): 
     self.send_response(200) 
     self.end_headers() 
     self.wfile.write('{"status" : "ready"}') 

交換了send_responsewfile.writesend_response