我有一个非常简单的netcatnetworking服务器,用于显示某些机器的/etc/motd文件,在Firefox中可以正常工作,但在Chrome中间歇性地失败。 我怀疑这是一个HTTP头/caching问题,但我不知道我需要做什么,使Chrome的行为。
我的脚本:
#!/bin/bash while true do { echo -e "HTTP/1.1 200 OK\r\nContent-Length: $(cat -s /etc/motd | wc -c)\r\nContent-Type: text/plain\r\n\r\n" cat -s /etc/motd; } | nc -l 2020 done
其中服务:
HTTP/1.1 200 OK Content-Length: 252 Content-Type: text/plain .../etc/motd file contents....
火狐似乎处理这个罚款,有时候,有时,但有时它返回:
此网页无法使用
Google Chrome与machine.example.com的连接尝试遭到拒绝。 该网站可能已closures,或者您的networking可能没有正确configuration。
我还没有看到任何特定的模式导致连接失败,但我目前的理论是有一些额外的头Chrome期望看到,或者连接是突然closures,Chrome假设意味着机器已closures,并没有实际上重新尝试一下。
netcat不是为可扩展性而devise的,而仅仅是一个debugging工具。 如果连接closures,则nc停止监听。 既然你有一个无限循环再次启动nc ,你通常可以打开页面。 请记住,大多数浏览器最初都会请求资源(例如/ ),而且还需要/favicon.ico 。 这是一个这样的情况下,这个构造可能无法处理好,因为没有运行的时间很短。
如果你需要一个简单的networking服务器,你可以使用Python。 例如,要服务当前目录:
python -m SimpleHTTPServer 2020
如果您使用Python 3,则需要运行:
python -m http.server 2020
对于BaseHTTPServer文档 ,您只需要添加一个请求处理程序。