为什么我不能让 netcat 与我的 Rails 服务器通信?

Why can't I get netcat talking to my Rails server?

我有一个本地运行的瘦服务器,为 Rails 应用程序提供服务。按照 netcat 手册页中的示例,我尝试使用 nc 与我的服务器通信:

echo -n "GET / HTTP/1.1\r\n\r\n" | nc 0.0.0.0 3000

但我收到 400 响应:

HTTP/1.1 400 Bad Request
Content-Type: text/plain
Connection: close
Server: thin 1.6.1 codename Death Proof

我错过了什么?

HTTP 1.1 需要提供 Host: header。您还需要将 -e 标志添加到 echo 命令以转义字符序列,因此

echo -en "GET / HTTP/1.1\r\nHost: localhost\r\n\r\n" | nc 0.0.0.0 3000

可以,或者您可以使用不需要 Host: header 的 HTTP 1.0,因此

echo -en "GET / HTTP/1.0\r\n\r\n" | nc 0.0.0.0 3000