首页 > 解决方案 > 将chrome中的请求发送到python服务器时出现ERR_INVALID_HTTP_RESPONSE

问题描述

我在 python 中有这个服务器:

class MyServer(SimpleHTTPRequestHandler):
        
    def do_POST(self):
        
        ...
        some code here
        ...

        self.send_header('Access-Control-Allow-Origin', '*')
        self.send_header('Access-Control-Allow-Methods', 'POST')
        self.send_header('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers')
        self.end_headers()
        self.send_response(200)

if __name__ == "__main__":        
    webServer = HTTPServer((hostName, serverPort), MyServer)
    print("Server started http://%s:%s" % (hostName, serverPort))

    try:
        webServer.serve_forever()
    except KeyboardInterrupt:
        pass

    webServer.server_close()
    print("Server stopped.")

但是,当我尝试在 chrome 中的 js 代码中发出请求时,出现此错误:POST http://localhost:8080/ net::ERR_INVALID_HTTP_RESPONSE

我读过这是 cors 问题,我需要添加 headers Access-Control-Allow-Origin,我做了,但没有帮助。

任何人都知道如何解决它?

标签: javascriptpythongoogle-chrome

解决方案


您需要先调用send_response,然后是自定义send_header调用,然后end_headers是 ,然后发送您要发送的任何数据。SimpleHTTPRequestHandler 非常原始,希望您了解 HTTP 协议。


推荐阅读