尝试使用 netcat 连接 HTTP 服务器时出错

尝试使用 netcat 连接 HTTP 服务器时出错

我正在尝试使用 netcat 连接到在本地主机 80 端口上运行的 Nginx 服务器。但无论我发送哪个标头(GET、POST、HEAD),我总是收到相同的错误页面。有人能解释一下为什么吗?

pradeep@pradeep-laptop:~$ echo -n "GET / HTTP/1.0\r\n\r\n" | nc localhost 80
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>

我正在运行上述相同的命令,但仍然得到 html 页面。

pradeep@pradeep-laptop:~$ echo -n "HEAD / HTTP/1.0\r\n\r\n" | nc localhost 80
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>

我还使用 netstat 命令检查了我的 nginx 服务器是否正在运行。输出如下:

root@pradeep-laptop:/# netstat -taupen| grep LISTEN | grep :80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN          0          264102      13723/nginx     

答案1

echo(在 bash 和 中/bin/echo)默认情况下不扩展转义符。这意味着您的 CR 和 LF 字符实际上是作为\r和发送的\n。您需要提供-e选项才能启用转义符。

$ echo -en "GET / HTTP/1.0\r\n\r\n" | nc localhost 80
HTTP/1.1 403 Forbidden

相关内容