1

我有以下样机服务器,除了一项外,它工作正常。我们正在尝试将来自客户端的 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()
4

0 回答 0