我用python编写了一个简单的httpweb服务器,但是我注意到当我连接到它时,html页面会出现在浏览器窗口中,但是chrome选项卡中的指示器继续旋转,服务器接收到空字符串。这一直持续到我单击“X”停止加载页面。有人能解释一下为什么会发生这种情况,以及如何解决这个问题。另外,如果http头是错误的或我遗漏了重要的,请告诉我。我发现很难找到关于http头和命令的信息。在
找到代码here。在
控制台输出:
套接字已创建
绑定套接字
Socket正在收听
连接127.0.0.1:55146
连接127.0.0.1:55147接收数据:GET/HTTP/1.1
主机:本地主机
连接:保持活动状态
接受:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0
.8个
用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如
壁虎)铬/33.0.1750.154 Safari/537.36
DNT:1
接受编码:gzip、deflate、sdch
接受语言:en-GB,en-US;q=0.8,en;q=0.6
正在分析GET命令
客户端请求的目录/索引.html使用HTTP版本1.1
html
/索引.html在
HTTP/1.1 200可以吗
内容类型:text/html;字符集=UTF-8
服务器:Max的Python Web服务器/1.0
缓存控制:最大年龄=600,公共
连接127.0.0.1:55148
收到的数据:
收到的数据:
收到的数据:
收到的数据:
你的错就在于你对插座的看法:
socket.recv
将永远等待来自客户端的数据这里不需要循环。
但是,您的请求将受到
recv
参数的限制。但如果您希望允许任何尺寸请求,
您应该通过HTTP规范来检测数据的结尾。在
例如,如果您只等待标题,则双换行将意味着它们结束。
而body的大小(例如对于POST方法)应该用
Content-length
头来传递。在您的问题与此问题相同:link
如果你想制作正确的HTTP服务器,可以使用googleforhttp规范。在
相关问题 更多 >
编程相关推荐