连接到我的python Web服务器时页面无限加载

时间:2014-03-30 16:46:57

标签: python webserver

我使用python编写了一个简单的http web服务器,但我注意到当我连接到它时,html页面出现在浏览器窗口中,但chrome选项卡中的指示器继续旋转,服务器收到空字符串。这一直持续到我单击“X”以停止加载页面。有人可以解释为什么会发生这种情况以及如何解决这个问题。另外,如果http标题错误或者我错过了重要标题,请告诉我。我发现很难找到有关http标头和命令的信息。

您找到代码here

Link to image of network tab

控制台输出:

创建套接字
绑定插座
现在正在收听插座
连接127.0.0.1:55146
连接127.0.0.1:55147接收数据:GET / HTTP / 1.1
主持人:localhost
连接:保持活力
接受:text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp, / ; q = 0 0.8
User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,like Gecko)Chrome / 33.0.1750.154 Safari / 537.36
DNT:1
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US; q = 0.8,en; q = 0.6



解析GET命令
客户端请求目录/index.html,HTTP版本1.1
HTML
/index.html

回复标题:


HTTP / 1.1 200 OK
内容类型:text / html;字符集= UTF-8
服务器:Max的Python Web Server / 1.0
Cache-Control:max-age = 600,public


连接127.0.0.1:55148
收到的数据:
收到的数据:
收到的数据:
收到的数据:

1 个答案:

答案 0 :(得分:1)

你的错误是你如何看待套接字:

socket.recv将永远等待来自客户的数据

这里你不需要循环。
但是,您的请求将受recv param的限制 但是如果你想允许任何尺寸要求,
您应该通过 HTTP 规范来检测数据的结尾。

例如,如果您只等标题,则双线换行意味着它们结束 如我所知,身体的大小(例如 POST 方法)应与Content-length标头一起传递。

您的问题与此问题相同:link
如果你想制作正确的HTTP服务器,请谷歌搜索HTTP规范。