我使用https://gist.github.com/bradmontgomery/2219997 python代码来设置http服务器。 对于我的用途,我只需在'do_POST'方法中添加几行:
def do_POST(self):
self._set_headers()
self.wfile.write("POST!")
content_length = int(self.headers['Content-Length'])
print(content_length )
post_data = self.rfile.read(content_length)
print(post_data)
我想通过Curl发送文件:
curl -F "file=@file.txt" "http://myServer.noip.me:22222/" --trace-ascii debugdump.txt
客户端:卷曲响应为:
curl: (52) Empty reply from server
服务器端:服务器打印content_length值,然后完全挂在“ self.rfile.read(content_length)”行。它不打印'print(post_data)'。
双方的防火墙均已禁用。
debugdump.txt中的最后几行(客户端):
== Info: Empty reply from server
== Info: Connection #0 to host myServer.noip.me left intact
我想念什么?
答案 0 :(得分:1)
Empty reply from server
意味着服务器关闭连接而没有响应任何,这是违反HTTP协议的行为。
使用适当的服务器永远都不会发生这种情况,因此这表明服务器端发生了严重错误。
有时发生这种情况是因为服务器是天真的实现的,并且由于来自客户端的意外请求而崩溃或行为异常。那么,使此工作正常进行的最佳机会就是尝试以某种方式更改请求,使其与写得不好的服务器软件可能期望的方式更加相似。
这是一个猜测的问题。或者做正确的事并与服务器管理员联系,让他们修复服务器。