我有以下样机服务器,除了一项外,它工作正常。我们正在尝试将来自客户端的 HTTP 请求附带的任何标头项作为标头项发送回客户端。
当我们尝试使用 HEAD 方法或将 GET 方法的响应代码更改为 204 时,该代码可以完美运行。但是当我们尝试使用响应代码为 200 的 get 方法时,它将同时发送正文和标头,系统没有完成该过程。出于某种原因,它继续工作并且不完成请求。它发送标头,发送 msg body ,但是它没有完成任务,而是继续执行任务,但是除了服务器变得无响应之外,我们不知道发生了什么。
如果有人可以提供解决方案来克服这个问题,我们将不胜感激。
谢谢
from http.server import HTTPServer, BaseHTTPRequestHandler import ssl, sys, time, os, datetime class Mock(BaseHTTPRequestHandler): def do_GET(self): print(" GET: Headers: {}".format(self.headers)) sys.stdout.flush() self.send_response(200) # captures the header in original request, converts it in a dictionary item # and then sends the items back as headers a = dict(self.headers) for key, value in a.items(): self.send_header(key, value) self.end_headers() f=open(rpath,"r") self.wfile.write(f.read().encode()) f.close() def do_HEAD(self): self.send_response(204) a = dict(self.headers) print(a) for key, value in a.items(): self.send_header(key, value) self.end_headers() def main(): global hostname, port hostname = "127.0.0.1" port = 8000 myServer = HTTPServer((hostname, port), Mock) myServer.serve_forever() if __name__ =="__main__": main()