首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python + Curl -如何修复“来自服务器的空回复”

Python + Curl -如何修复“来自服务器的空回复”
EN

Stack Overflow用户
提问于 2019-05-05 09:27:36
回答 2查看 1.8K关注 0票数 0

我使用https://gist.github.com/bradmontgomery/2219997 python代码来设置一个http服务器。对于我的使用,我只是在'do_POST‘方法中添加了几行代码:

代码语言:javascript
复制
    def _set_headers(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()

    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发送一个文件:

代码语言:javascript
复制
curl -F "file=@file.txt" "http://myServer.noip.me:22222/" --trace-ascii debugdump.txt

客户端: Curl响应是:

代码语言:javascript
复制
 curl: (52) Empty reply from server

服务器端:服务器打印content_length值,然后完全挂起"self.rfile.read(content_length)“。它不打印“打印(Post_data)”。

防火墙已在两边被禁用。

debugdump.txt (客户端)的最后一行:

代码语言:javascript
复制
== Info: Empty reply from server
== Info: Connection #0 to host myServer.noip.me left intact

我错过了什么?

EN

回答 2

Stack Overflow用户

发布于 2019-05-05 13:35:02

Empty reply from server意味着服务器关闭连接而不响应任何违反HTTP协议的内容。

这不应该发生在适当的服务器上,因此它表明服务器端出现了严重的错误。

有时发生这种情况是因为服务器被天真地实现,并在来自客户端的意外请求中崩溃或行为不当。这样做的最佳机会是尝试修改请求,使其更类似于糟糕编写的服务器软件所期望的方式。

这只是猜测而已。你的服务器出了点问题。

票数 0
EN

Stack Overflow用户

发布于 2022-07-11 12:42:35

对于Python的http.server包,您有责任显式地发送HTTP代码,作为do_POST()覆盖的一部分。

在您的示例代码中,您首先回答客户端(即通过标头()标头()wfile ),然后再从客户端读取整个POST请求!

还请参阅Python的wfile文档:

包含用于将响应写入客户端的输出流。在写入此流时,必须使用对HTTP协议的适当依附,以便与HTTP客户端实现成功的互操作。

因此,这看起来很时髦,您可能只需要确保在开始回复之前阅读完整的POST请求

IOW,curl只是抱怨在连接关闭之前它没有从您的服务器接收到任何HTTP状态代码。显然,连接双方都没有正确关闭,因此服务器在读取端阻塞。

卷曲误差

代码语言:javascript
复制
curl: (52) Empty reply from server

如果您简单地忘记通过省略发送状态代码,也会出现

代码语言:javascript
复制
        self.send_response(200)
        self.end_headers()

在方法的末尾--或者如果方法过早退出(例如,因为它会引发异常)。

但是,后一个问题应该会出现在服务器的stderr输出中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55990530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档