Назад | Перейти на главную страницу

Ошибка при попытке подключения к HTTP-серверу с помощью netcat

Я пытаюсь подключиться к серверу Nginx, который работает на моем локальном хосте через порт 80, с помощью netcat. Но я все время получаю одну и ту же страницу с ошибкой, независимо от того, какой заголовок (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>

Я проверил, работает ли мой сервер nginx или нет, с помощью команды netstat. Результат выглядит следующим образом:

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     

echo (в bash и /bin/echo) по умолчанию не раскрывают escape-последовательности. Это означает, что ваши символы CR и LF буквально отправляются как \r и \n. Вам необходимо предоставить -e опция, чтобы разрешить побеги.

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