javascript - 将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
,我做了,但没有帮助。
任何人都知道如何解决它?
解决方案
您需要先调用send_response
,然后是自定义send_header
调用,然后end_headers
是 ,然后发送您要发送的任何数据。SimpleHTTPRequestHandler 非常原始,希望您了解 HTTP 协议。
推荐阅读
- c - 如何通过预处理器比较浮点值?无法比较浮点值
- node.js - 无法创建机器人
- python - Tensorflow:如何从具有不同索引大小的张量中选择行?
- c++ - 如何获取 LLVM IR 中的引用函数指针?
- flutter - 颤振中的ffmpeg音频转换
- nd4j - 如何将较小的 INDArray 复制到较大的 INDArray
- java - Java 使用 MongoCollection.countDocuments() 执行缓慢甚至超时,但不推荐使用 count() 方法是可以的
- kubernetes - Helm 和 Kustomize 有什么区别?
- excel - 提取两个特定字符或数字之间的单词
- ruby - 如果消息为空,则 Logstash 删除整行